module ActiveRecord::Acts::Versioner::ClassMethods
Public Class Methods
reloadable?()
click to toggle source
# File lib/acts_as_versioner/acts_as_versioner.rb, line 51 def self.reloadable? ; false ; end
Public Instance Methods
acts_as_versioner(options = {}, &extension)
click to toggle source
# File lib/acts_as_versioner/acts_as_versioner.rb, line 16 def acts_as_versioner(options = {}, &extension) include ActiveRecord::Acts::Versioner::InstanceMethods # don't allow multiple calls return if self.included_modules.include?(ActiveRecord::Acts::Versioner::ActMethods) send :include, ActiveRecord::Acts::Versioner::ActMethods cattr_accessor :versioned_class_name, :versioned_foreign_key, :versioned_table_name send :attr_accessor self.versioned_class_name = options[:class_name] || "#{base_class}#{ActiveRecord::Acts::Versioner::configurator[:default_versioned_class_name]}" self.versioned_table_name = options[:table_name] || "#{table_name_prefix}#{base_class.name.demodulize.underscore}#{ActiveRecord::Acts::Versioner::configurator[:default_versioned_table_name]}#{table_name_suffix}" self.versioned_foreign_key = options[:versioned_foreign_key] || "#{table_name_prefix}#{base_class.name.demodulize.underscore}_id" # quick 'n' dirty fix if block_given? extension_module_name = "#{versioned_class_name}Extension" silence_warnings do self.const_set(extension_module_name, Module.new(&extension)) end options[:extend] = self.const_get(extension_module_name) end class_eval do include options[:extend] if options[:extend].is_a?(Module) before_save :b_s before_destroy :b_d after_save :a_s after_destroy :a_d end # create the dynamic versioned model const_set(versioned_class_name, Class.new(ApplicationRecord)).class_eval do def self.reloadable? ; false ; end end versioned_class.table_name = "#{versioned_table_name}" versioned_class.belongs_to self.to_s.demodulize.underscore.to_sym, :class_name => "#{self.to_s}::#{versioned_class_name}", :foreign_key => versioned_foreign_key versioned_class.send :include, options[:extend] if options[:extend].is_a?(Module) end