4: def create_versioned_table(table_name, options={}, &block)
5:
6:
7: t = TableDefinition.new(self)
8: t.primary_key(options[:primary_key] || Base.get_primary_key(table_name)) unless options[:id] == false
9:
10: t.integer :version
11: t.integer :lock_version, :default => 0
12: yield t
13:
14:
15:
16: t.string :name unless t[:name]
17:
18: t.boolean :published, :default => false
19: t.boolean :deleted, :default => false
20: t.boolean :archived, :default => false
21: t.integer :created_by_id
22: t.integer :updated_by_id
23: t.timestamps
24:
25:
26: create_table_from_definition(table_name, options, t)
27:
28:
29: vt = TableDefinition.new(self)
30: vt.primary_key(options[:primary_key] || Base.get_primary_key(table_name)) unless options[:id] == false
31:
32: vt.integer "#{table_name.to_s.singularize}_id".to_sym
33: vt.integer :version
34: yield vt
35:
36:
37: vt.string :name unless vt[:name]
38:
39: vt.boolean :published, :default => false
40: vt.boolean :deleted, :default => false
41: vt.boolean :archived, :default => false
42: vt.string :version_comment
43: vt.integer :created_by_id
44: vt.integer :updated_by_id
45: vt.timestamps
46:
47:
48:
49: create_table_from_definition("#{table_name.to_s.singularize}_versions".to_sym, options, vt)
50:
51: end