Rai*_*DFW 3 activerecord ruby-on-rails paper-trail-gem
我不认为有一种简单的方法可以将PaperTrail应用于所有模型,除非has_paper_trail在每个模型中声明.我想做到的是利用PaperTrail的特征(或其他宝石一样,可审计,维斯塔版本)的所有车型.例如,我想包括由宝石和引擎生成的模型(Rails 3).
有关如何应用"全球"PaperTrail(或类似宝石)的任何指示?
Vik*_*ary 11
对于Rails 5.0+(如果app有ApplicationRecord类)
class ApplicationRecord < ActiveRecord::Base
def self.inherited subclass
super
subclass.send(:has_paper_trail)
end
end
Run Code Online (Sandbox Code Playgroud)
对于较旧的Rails版本
# config/initializers/paper_trail_extension.rb
ActiveRecord::Base.singleton_class.prepend Module.new {
def inherited subclass
super
skipped_models = ["ActiveRecord::SchemaMigration", "PaperTrail::Version", "ActiveRecord::SessionStore::Session"]
unless skipped_models.include?(subclass.to_s)
subclass.send(:has_paper_trail)
end
end
}
Run Code Online (Sandbox Code Playgroud)
(由于运算符优先级,使用{/}而不是do/end之后使用非常重要Module.new).
| 归档时间: |
|
| 查看次数: |
869 次 |
| 最近记录: |