22

レコードが作成されたときに after_commit でモデルへの変更を追跡する方法はありますか? ダーティ モジュールを使用してみましたが、レコードが更新されたときに変更を追跡できましたが、レコードが作成されたときに変更が記録されません。

4

1 に答える 1

54

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

after_commit :foo

def foo
 if previous_changes[attribute_name]
   #do your task
 end
end
于 2014-06-10T11:14:31.743 に答える