Ruby on Rails 回调简介

示例

回调是一种在对象生命周期的特定时刻(在从数据库创建,删除,更新,验证,保存或加载之前或之后)被调用的方法。

例如,假设您的列表在创建后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可以同时在create和update上运行,但无论执行宏调用的顺序如何,始终在更具体的回调after_create和after_update之后。