我有一个ActivityObserver
,它正在观察tasks
,并且有一个after_update
回调。
我想测试update
中是否修改了某个特定属性。
是否有Rails方法将主题的属性与更新前的属性进行比较,或检查它们是否已更改?
答案 0 :(得分:9)
当执行after_update回调时,每个ActiveModel对象都有一个名为changed_attributes
的方法。您可以在调试环境中查看它。每个ActiveRecord对象都有此方法。它具有已更改/修改的所有值的哈希值。这也称为脏对象。
查看其中一些教程
答案 1 :(得分:1)
你的观察者必须有类似的事情。
class ActivityObserver < ActiveRecord::Observer
def after_update(activity)
if activity.attribute_name_changed?
puts "The above condition will return true or false, and this time it has returned true..!!!"
end
end
end
以上方法都可以。我想你在找这个......