我的消息模型在create_notifications
中调用after_create
:
def create_notifications
if Message.where(id: 3).first.present? # This message exists!
puts "Found message" # This never fires when run :after_create
else
puts "#{Message.count}" # Returns 1 in after_create, and 125 in console (it only sees the just-created message)
end
问题:Message.where(id:3)在回调中运行时不返回任何内容。但是,它在控制台中运行时有效。此外,在我创建消息后手动运行.create_notifications
时,它也能正常工作。
为什么Message.where
,Message.count
等在after_create
中运行时不起作用?
答案 0 :(得分:0)
用Message.unscoped.where(id: 3)
取代它。奇怪,因为我没有默认范围或任何东西。我想ActiveRecord会对where
中刚创建的查询进行after_create
个查询范围?