| Module | ActiveRecord::ConnectionAdapters::SchemaStatements |
| In: |
lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements.rb
|
# File lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements.rb, line 53
53: def create_table_from_definition(table_name, options, table_definition)
54: if options[:force] && table_exists?(table_name)
55: drop_table(table_name, options)
56: end
57:
58: create_sql = "CREATE#{' TEMPORARY' if options[:temporary]} TABLE "
59: create_sql << "#{quote_table_name(table_name)} ("
60: create_sql << table_definition.to_sql
61: create_sql << ") #{options[:options]}"
62: execute create_sql
63: end
# File lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements.rb, line 4
4: def create_versioned_table(table_name, options={}, &block)
5:
6: #Do the primary table
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: # Blocks currently must have a name column, otherwise the UI fails in several places.
15: # Some migrations may have already specified a name attribute, so we don't want to overwrite it here.
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: #Do the versions table
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: # Create implicit name column in version table as well.
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