如果我的对象的after_update
值是两个值中的一个,我希望只触发status_was
挂钩:
after_update :set_activity_log, :if => :status_was == 'In' or :status_was == 'Out'
我可以将其与#status_changed?
一起使用但是它仍会触发所有其他可能的状态更改,并且我不得不添加逻辑来检查回调方法中的In或Out。
我觉得这应该可以在钩子定义中实现,而不是在set_activity_log
方法中实现。
答案 0 :(得分:2)
Per the documentation您可以将Proc传递给ActiveRecord回调:
after_update :set_activity_log,
:if => proc {|obj| obj.status_was == 'In' || obj.status_was == 'Out' }