After_update挂钩:if语法

时间:2012-03-05 18:54:12

标签: ruby-on-rails-3.1 hook

如果我的对象的after_update值是两个值中的一个,我希望只触发status_was挂钩:

after_update :set_activity_log, :if => :status_was == 'In' or :status_was == 'Out'

我可以将其与#status_changed?一起使用但是它仍会触发所有其他可能的状态更改,并且我不得不添加逻辑来检查回调方法中的In或Out。

我觉得这应该可以在钩子定义中实现,而不是在set_activity_log方法中实现。

1 个答案:

答案 0 :(得分:2)

Per the documentation您可以将Proc传递给ActiveRecord回调:

after_update :set_activity_log,
  :if => proc {|obj| obj.status_was == 'In' || obj.status_was == 'Out' }