将a:before_save添加到AR模型是否会覆盖已通过自定义扩展添加到AR的模型?

时间:2015-01-21 17:49:18

标签: ruby-on-rails-4 activerecord

我们使用一组自定义的“魔术”列,我们会在每个AR模型中检查这些列。如果找到任何内容,则在保存或保存之前,它们会被适当填充!这是使用以下代码作为初始化程序完成的:

module HLLAuditStamps
  extend ActiveSupport::Concern

  included do
    before_save :set_audit_attributes
  end

  private

  def set_audit_attributes
    . . .
  end
end

class ActiveRecord::Base
  include HLLAuditStamps
end

我的问题是:如果我们在其中一个模型中添加了一个before_save回调,那么这个代码会发生什么?这两个都被执行了吗?模型回调是否覆盖初始化程序中提供的默认值?

1 个答案:

答案 0 :(得分:0)

为了澄清,上面添加的默认值和添加到特定模型的任何自定义before_save回调都将执行。 。 。我相信"可继承的回调队列"在ActiveRecord :: Callbacks文档中将适用。回调宏如before_save"将行为添加到回调队列中,该回调队列通过继承层次结构保持完整。" - 乔丹