Module: ActsAsVersionable::ClassMethods

Defined in:
lib/acts_as_versionable.rb

Instance Method Summary collapse

Instance Method Details

#acts_as_versionable(options = {}) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/acts_as_versionable.rb', line 16

def acts_as_versionable(options = {})
  cattr_accessor :max_versions
  self.max_versions = (options[:max_versions] || 10)

  after_save :create_new_version
  before_validation :versionable_validation

  has_many :internal_versions,
           :class_name => self.name,
           :foreign_key => "version_id",
           :order => "version_number desc",
           :dependent => :destroy
  
  belongs_to :parent_version, :class_name => self.name, :foreign_key => "version_id" 
  
  scope :last_versions, where(:version_id => nil)
  scope :get_versionable, lambda { |id, version| where(:version_id => id, :version_number => version) }
        
  include InstanceMethods
end