回撥簡介
回撥是一種在物件生命週期的特定時刻(在建立,刪除,更新,驗證,儲存或從資料庫載入之前或之後)呼叫的方法。
例如,假設你有一個列表在建立後 30 天內到期。
一種方法是這樣的:
class Listing < ApplicationRecord
after_create :set_expiry_date
private
def set_expiry_date
expiry_date = Date.today + 30.days
self.update_column(:expires_on, expiry_date)
end
end
回撥的所有可用方法如下所示,其順序與在每個物件操作期間呼叫它們的順序相同:
建立一個物件
- before_validation
- after_validation
- before_save
- around_save
- before_create
- around_create
- after_create
- after_save 的
- after_commit / after_rollback
更新物件
- before_validation
- after_validation
- before_save
- around_save
- before_update
- around_update
- after_update
- after_save 的
- after_commit / after_rollback
摧毀一個物體
- before_destroy
- around_destroy
- after_destroy
- after_commit / after_rollback
注意: after_save 在建立和更新時執行,但總是在更具體的回撥 after_create 和 after_update 之後執行,無論巨集呼叫的執行順序如何。