Module: ActiveVersion::Adapters::ActiveRecord::Revisions::ClassMethods

Defined in:
lib/active_version/adapters/active_record/revisions.rb

Instance Method Summary collapse

Instance Method Details

#has_revisions(options = {}) ⇒ Object

Declare that a model has revisions



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/active_version/adapters/active_record/revisions.rb', line 13

def has_revisions(options = {})
  include ActiveVersion::Revisions::HasRevisions
  extend ActiveVersion::Revisions::SQLBuilder::ClassMethods

  # Delegate to the concern implementation so callbacks/options are
  # installed consistently for the DSL path.
  ActiveVersion::Revisions::HasRevisions::ClassMethods
    .instance_method(:has_revisions)
    .bind_call(self, options)

  # Register revision class
  revision_class_name = "#{name}Revision"
  if const_defined?(revision_class_name)
    revision_class = const_get(revision_class_name)
    if options[:table_name] && revision_class.respond_to?(:table_name=)
      revision_class.table_name = options[:table_name].to_s
    end
    ActiveVersion.registry.register_version_class(self, :revisions, revision_class)
  end
end