我有一個Rails對象,其中after_update
回調會將記錄發送到隊列。問題是,我注意到有時隊列正在被處理的速度比對象實際上被更新的速度更快。瞭解Rails 4中的after_update回調函數
我的問題:是after_update
在對象更新結束後調用不了,但是何時啓動?我需要什麼回調,如果我只想用它做點什麼之後更新成功了嗎?
我有一個Rails對象,其中after_update
回調會將記錄發送到隊列。問題是,我注意到有時隊列正在被處理的速度比對象實際上被更新的速度更快。瞭解Rails 4中的after_update回調函數
我的問題:是after_update
在對象更新結束後調用不了,但是何時啓動?我需要什麼回調,如果我只想用它做點什麼之後更新成功了嗎?
after_save
,after_create
,after_update
被稱爲在事務塊中,所以它們將在執行SQL語句之前執行。
如果您想在語句執行完成時執行某些操作,則應該使用after_commit回調。
如果您參考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
非常感謝!我對此失去了想法 – Zelenka