0

我将 Audited-ActiveRecord gem 添加到我的 Rails 4 应用程序中。为了实现 gem,我需要audited为每个模型添加一个方法调用。

是否可以将此方法包含在单个位置,而不必将其添加到我的每个 ActiveRecord 模型中?

https://rubygems.org/gems/audited-activerecord

经过审核的 gem 允许我粘贴audited到每个模型中,但是因为我正在尝试添加审核,而不必粘贴audited到 50 多个现有模型以及未来模型中。

例如:

class ModelOne < ActiveRecord::Base
  audited
  ...
end

class ModelTwo < ActiveRecord::Base
  audited
  ...
end

class ModelN < ActiveRecord::Base
  audited
  ...
end
4

2 回答 2

2

audited您可以使用初始化程序调用ActiveRecord::Base。这会将它包含在您的所有 ActiveRecord 模型中。

# config/initializers/audited.rb
module Audited
  extend ActiveSupport::Concern

  included do
    audited
  end
end

ActiveRecord::Base.include Audited
于 2016-09-12T07:57:54.293 回答
0

您可以使用它来执行此操作,但是您必须在每个模型文件中concerns包含此模块。concerns例如:

class SomethingModel
  include Auditable
  #...
end

class OtherModel
  include Auditable
  #...
end


# app/models/concerns/auditable.rb
module Auditable
  extend ActiveSupport::Concern
  #Your methods from Audited-Active-Record
end
于 2016-09-12T06:36:10.740 回答