2017-04-09 19 views
5

私は、キューにレコードを送るafter_updateコールバックを持つRailsオブジェクトを持っています。問題は、キューがオブジェクトが実際に更新されているよりも速く処理されていることに気付いたことです。Rails 4でのafter_updateコールバックの理解

私の質問は:after_updateは、オブジェクトの更新が終了した後ではなく、起動したときですか?の更新が成功した後に何かをしたい場合は、コールバックをにすればいいですか?

答えて

10

after_saveafter_createafter_updateが呼び出されますトランザクションブロック内で実行されるため、SQL文を実行する前に実行されます。

文の実行が完了したときに何かしたい場合は、after_commitコールバックを使用する必要があります。

+0

ありがとうございます!私はこれについて私の心を失っていた – Zelenka

1

Railsのマニュアルを参照すると、使用できるコールバックがたくさん見つかります。この仕事のための最高のは、 "after_commit" であるかもしれない:

これはストレートRailsのドキュメント(下部にリンク)

3.1 Creating an Object 

before_validation 
after_validation 
before_save 
around_save 
before_create 
around_create 
after_create 
after_save 
after_commit/after_rollback 

3.2 Updating an Object 

before_validation 
after_validation 
before_save 
around_save 
before_update 
around_update 
after_update 
after_save 
after_commit/after_rollback 

3.3 Destroying an Object 

before_destroy 
around_destroy 
after_destroy 

Railsのドキュメントからです:http://guides.rubyonrails.org/active_record_callbacks.html

関連する問題