在after_commit中跟踪模型更改:on => :创建回调

时间:2013-10-07 23:09:53

标签: ruby-on-rails ruby-on-rails-3

有没有办法在创建记录时跟踪after_commit上的模型更改?我尝试过使用脏模块,并且能够在更新记录时跟踪更改,但是创建记录时不会记录更改。

1 个答案:

答案 0 :(得分:46)

您无法使用rails changed?方法,因为它始终返回false。要在提交事务后跟踪更改,请使用previous_changes方法。它将返回一个带有属性名称作为键的哈希。然后,您可以检查您的attribute_name是否在散列中:

after_commit :foo

def foo
 if previous_changes[attribute_name]
   #do your task
 end
end