Chris@0: class Page < ActiveRecord::Base Chris@0: belongs_to :author Chris@0: has_many :authors, :through => :versions, :order => 'name' Chris@0: belongs_to :revisor, :class_name => 'Author' Chris@0: has_many :revisors, :class_name => 'Author', :through => :versions, :order => 'name' Chris@0: acts_as_versioned :if => :feeling_good? do Chris@0: def self.included(base) Chris@0: base.cattr_accessor :feeling_good Chris@0: base.feeling_good = true Chris@0: base.belongs_to :author Chris@0: base.belongs_to :revisor, :class_name => 'Author' Chris@0: end Chris@0: Chris@0: def feeling_good? Chris@0: @@feeling_good == true Chris@0: end Chris@0: end Chris@0: end Chris@0: Chris@0: module LockedPageExtension Chris@0: def hello_world Chris@0: 'hello_world' Chris@0: end Chris@0: end Chris@0: Chris@0: class LockedPage < ActiveRecord::Base Chris@0: acts_as_versioned \ Chris@0: :inheritance_column => :version_type, Chris@0: :foreign_key => :page_id, Chris@0: :table_name => :locked_pages_revisions, Chris@0: :class_name => 'LockedPageRevision', Chris@0: :version_column => :lock_version, Chris@0: :limit => 2, Chris@0: :if_changed => :title, Chris@0: :extend => LockedPageExtension Chris@0: end Chris@0: Chris@0: class SpecialLockedPage < LockedPage Chris@0: end Chris@0: Chris@0: class Author < ActiveRecord::Base Chris@0: has_many :pages Chris@0: end