activerecord - Rails 3: Model.all.count always returns 1 in after_create method -


i want check in after_create if newly created record first 1 meets condition. want able check, model.where(...some condition...).count > 1, in after_create callback. however, rails not allow reason , can't find explanations why. if query, model.all.count, in after_create, returns 1, , 1 record 1 created. if execute raw sql in after_create method can retrieve correct information. why can't perform query using model.where(...)?

edit:

in response questions below. there no errors messages. below class , example of logged output. feel must stupid i'm overlooking, appreciate help.

class experiencephoto < activerecord::base   belongs_to :experience, counter_cache: true   belongs_to :photo     after_create :set_cover_photo    def self.find_or_create(params)     where(params).first_or_create   end     protected    def set_cover_photo     logger.debug self.inspect     logger.debug experiencephoto.all.inspect     logger.debug experiencephoto.all.count.to_s     logger.debug activerecord::base.connection.execute("select count(*) experience_photos")[0].inspect    end 

end

calling this:

experiencephoto.find_or_create(photo_id: photo_id, experience_id: self.id) 

results in output:

#<experiencephoto id: 183, experience_id: 93, photo_id: 106> [#<experiencephoto id: 183, experience_id: 93, photo_id: 106>] 1 {"count"=>"168"} 

what sql log show experiencephoto.all.count ?

i don't know sure, guess it's because set_cover_photo called scope of previous where.

try wrapping in unscoped:

def set_cover_photo   experiencephoto.unscoped     logger.debug self.inspect     logger.debug experiencephoto.all.inspect     logger.debug experiencephoto.all.count.to_s     logger.debug activerecord::base.connection.execute("select count(*) experience_photos")[0].inspect   end end 

Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -