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