我有两张桌子:人和汽车:
Person has_many cars
Car belongs_to person
。我希望在汽车license_plate
发生变化时向此人发送电子邮件。
我已成功制作邮件代码,但在if
回调中设置after_save
条件时遇到问题。
#Inside Person models
after_save :send_mail_notification, if: (self.cars.first.order('updated_at DESC').changed?)
def send_mail_notification(person)
...
end
我收到了这个错误
NoMethodError: undefined method `cars' for #<Class:0x4852ba8>
所以,我猜self
在回调中无法使用?任何解决方案?
由于
答案 0 :(得分:4)
after_save :send_mail_notification, if: Proc.new { |model| model.cars.order('updated_at DESC').first.changed? }
答案 1 :(得分:1)
将其移入方法?
after_save :send_mail_notification
def send_mail_notification(person)
if (person.cars.first.order('updated_at DESC').changed?
..
end
end