Rails 5.0 以降の場合(アプリにApplicationRecord
クラスがある場合)
class ApplicationRecord < ActiveRecord::Base
def self.inherited subclass
super
subclass.send(:has_paper_trail)
end
end
古い 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
}
(演算子の優先順位のため、後ででは{/}
なく使用することが重要です)。do/end
Module.new