ActiveSupport::Concern 运行 方法 before/after 初始化

ActiveSupport::Concern running method before/after initialize

ActiveSupport::Concern 是否支持在对象构造之前或之后 运行 方法的方法。

例如实现类似

的目标
Module Benchmarker

  extend ActiveSupport::Concern

  before_initialize
    @constructed_at = DateTime.now
  end

end

(注意:ActiveRecord 或 ActiveController 不需要这个。只是 Rails 项目中的通用 Ruby class。)

注意:这适用于模型或仅适用于继承自 ActiveRecord 的模型 类。

Rails 不支持 before_initialize 回调。您可以改用 after_initialize 回调。但是,在关注中使用它时,您需要在 included do..end 块中提及​​它。例如,以下代码应该适用于您的用例:

Module Benchmarker
  extend ActiveSupport::Concern

  included do
    after_initialize do |subject|
      p "I'm in after_initialize"
    end
  end
end

您可以参考 以了解有关 included 挂钩如何工作的更多详细信息。