2013-10-07 3 views
17

レコードの作成時にafter_commitのモデルの変更を追跡する方法はありますか?私はダーティモジュールを使ってみましたが、レコードが更新されたときに変更を追跡することができましたが、レコードが作成されると変更は記録されません。after_commitのトラッキングモデルの変更:on =>:コールバックの作成

+0

何かが作成されているだけでどのような変更がありますか? –

+0

nilから有効な値になるフィールド。 –

答えて

45

レールを使用することはできませんchanged?メソッドは常にfalseを返します。トランザクションがコミットされた後の変更を追跡するには、previous_changesメソッドを使用します。これは属性nameをキーとしてハッシュを返します。 attribute_nameがハッシュに含まれているかどうかを確認することができます。

after_commit :foo 

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

ありがとう!ハッシュにあなたの属性が含まれているかどうかを調べるには、次のようなことができます。if @ item.previous_changes.has_key?( 'attribute_name') ' –

関連する問題