Chris@0
|
1 class Page < ActiveRecord::Base
|
Chris@0
|
2 belongs_to :author
|
Chris@0
|
3 has_many :authors, :through => :versions, :order => 'name'
|
Chris@0
|
4 belongs_to :revisor, :class_name => 'Author'
|
Chris@0
|
5 has_many :revisors, :class_name => 'Author', :through => :versions, :order => 'name'
|
Chris@0
|
6 acts_as_versioned :if => :feeling_good? do
|
Chris@0
|
7 def self.included(base)
|
Chris@0
|
8 base.cattr_accessor :feeling_good
|
Chris@0
|
9 base.feeling_good = true
|
Chris@0
|
10 base.belongs_to :author
|
Chris@0
|
11 base.belongs_to :revisor, :class_name => 'Author'
|
Chris@0
|
12 end
|
Chris@0
|
13
|
Chris@0
|
14 def feeling_good?
|
Chris@0
|
15 @@feeling_good == true
|
Chris@0
|
16 end
|
Chris@0
|
17 end
|
Chris@0
|
18 end
|
Chris@0
|
19
|
Chris@0
|
20 module LockedPageExtension
|
Chris@0
|
21 def hello_world
|
Chris@0
|
22 'hello_world'
|
Chris@0
|
23 end
|
Chris@0
|
24 end
|
Chris@0
|
25
|
Chris@0
|
26 class LockedPage < ActiveRecord::Base
|
Chris@0
|
27 acts_as_versioned \
|
Chris@0
|
28 :inheritance_column => :version_type,
|
Chris@0
|
29 :foreign_key => :page_id,
|
Chris@0
|
30 :table_name => :locked_pages_revisions,
|
Chris@0
|
31 :class_name => 'LockedPageRevision',
|
Chris@0
|
32 :version_column => :lock_version,
|
Chris@0
|
33 :limit => 2,
|
Chris@0
|
34 :if_changed => :title,
|
Chris@0
|
35 :extend => LockedPageExtension
|
Chris@0
|
36 end
|
Chris@0
|
37
|
Chris@0
|
38 class SpecialLockedPage < LockedPage
|
Chris@0
|
39 end
|
Chris@0
|
40
|
Chris@0
|
41 class Author < ActiveRecord::Base
|
Chris@0
|
42 has_many :pages
|
Chris@0
|
43 end |