类方法不适用于after_create

时间:2018-01-31 02:58:51

标签: ruby-on-rails activerecord callback

我的消息模型在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.whereMessage.count等在after_create中运行时不起作用?

1 个答案:

答案 0 :(得分:0)

Message.unscoped.where(id: 3)取代它。奇怪,因为我没有默认范围或任何东西。我想ActiveRecord会对where中刚创建的查询进行after_create个查询范围?