diff options
Diffstat (limited to 'activerecord/lib/active_record/schema_migration.rb')
-rw-r--r-- | activerecord/lib/active_record/schema_migration.rb | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/schema_migration.rb b/activerecord/lib/active_record/schema_migration.rb index 9830abe7d8..fd226d5eba 100644 --- a/activerecord/lib/active_record/schema_migration.rb +++ b/activerecord/lib/active_record/schema_migration.rb @@ -14,17 +14,38 @@ module ActiveRecord end def self.create_table - unless connection.table_exists?(table_name) + if connection.table_exists?(table_name) + cols = connection.columns(table_name).collect { |col| col.name } + unless cols.include?("migrated_at") + connection.add_column(table_name, "migrated_at", :datetime) + q_table_name = connection.quote_table_name(table_name) + q_timestamp = connection.quoted_date(Time.now) + connection.update("UPDATE #{q_table_name} SET migrated_at = '#{q_timestamp}' WHERE migrated_at IS NULL") + connection.change_column(table_name, "migrated_at", :datetime, :null => false) + end + unless cols.include?("fingerprint") + connection.add_column(table_name, "fingerprint", :string, :limit => 32) + end + unless cols.include?("name") + connection.add_column(table_name, "name", :string) + end + else connection.create_table(table_name, :id => false) do |t| - t.column :version, :string, :null => false + t.column "version", :string, :null => false + t.column "migrated_at", :datetime, :null => false + t.column "fingerprint", :string, :limit => 32 + t.column "name", :string end - connection.add_index table_name, :version, :unique => true, :name => index_name + connection.add_index(table_name, "version", :unique => true, :name => index_name) end + reset_column_information end def self.drop_table + if connection.index_exists?(table_name, "version", :unique => true, :name => index_name) + connection.remove_index(table_name, :name => index_name) + end if connection.table_exists?(table_name) - connection.remove_index table_name, :name => index_name connection.drop_table(table_name) end end |