我想檢查after_create
如果新創建的記錄是第一個滿足某些條件的記錄。所以我希望能夠在after_create
回調中檢查Model.where(...some condition...).count > 1
。但是,由於某種原因,Rails不會允許這樣做,我也找不到任何解釋。如果我查詢,Model.all.count
,在after_create
,它總是返回1,並且一個記錄是我剛剛創建的記錄。如果我在after_create方法中執行原始SQL,那麼我可以檢索到正確的信息。爲什麼我不能使用Model.where(...)
執行查詢?Rails 3:Model.all.count在after_create方法中總是返回1
編輯:
回答下面的問題。沒有錯誤消息。以下是類和記錄輸出的示例。我覺得這一定是愚蠢的,我忽略了,我很感激幫助。
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(*) from experience_photos")[0].inspect
end
末
調用此:
ExperiencePhoto.find_or_create(photo_id: photo_id, experience_id: self.id)
結果輸出:
#<ExperiencePhoto id: 183, experience_id: 93, photo_id: 106>
[#<ExperiencePhoto id: 183, experience_id: 93, photo_id: 106>]
1
{"count"=>"168"}
您可以共享模型 – 2013-05-10 05:04:04
你也可以分享錯誤消息? – 2013-05-10 17:49:00