在我的应用程序中,我有预订和乘客,其中一个预订有很多乘客。
创建新预订后,我想向所有乘客发送通知,因此在我的预订模式中,我有:
after_create :send_notification
def send_notification
self.passengers.each do |passenger|
#DO STUFF
end
end
如果我尝试
,这没有任何作用puts(self.passengers.count)
它返回0.
当我用户after_save
一切正常时,所以我假设after_create它创建了父级而不是子级。
问题是我无法使用after_save
,因为此更新后也会触发。
有什么想法吗?
答案 0 :(得分:1)
您可以为after_save
添加条件:
after_save :send_notification, if: :id_changed?
# or :id_previously_changed? I don't remember if in after_save you can access dirty attributes
答案 1 :(得分:0)
将您的回调更改为:
after_save :send_notification, on: :create
这样您的回调会在保存后触发而不是创建对象,但仅在首次创建时才会出现。