回调简介
回调是一种在对象生命周期的特定时刻(在创建,删除,更新,验证,保存或从数据库加载之前或之后)调用的方法。
例如,假设你有一个列表在创建后 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 之后运行,无论宏调用的执行顺序如何。