aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters
diff options
context:
space:
mode:
authorDiego Algorta <diego@oboxodo.com>2008-06-21 20:18:30 -0300
committerJeremy Kemper <jeremy@bitsweat.net>2008-06-22 15:21:11 -0700
commit2e1b56c93745bf0513e449e95830edd390abfaf2 (patch)
tree52ca66c284130235b34b8728d30ef5563fe7cbc5 /activerecord/lib/active_record/connection_adapters
parenta02d672cd7aead8a24e3b10a6b8e12dd91ee0a49 (diff)
downloadrails-2e1b56c93745bf0513e449e95830edd390abfaf2.tar.gz
rails-2e1b56c93745bf0513e449e95830edd390abfaf2.tar.bz2
rails-2e1b56c93745bf0513e449e95830edd390abfaf2.zip
MySQL: rename_column preserves default values. [#466 state:resolved]
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
-rwxr-xr-xactiverecord/lib/active_record/connection_adapters/mysql_adapter.rb10
1 files changed, 9 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
index 93aafaaad1..8805c79c5b 100755
--- a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
@@ -450,8 +450,16 @@ module ActiveRecord
end
def rename_column(table_name, column_name, new_column_name) #:nodoc:
+ options = {}
+ if column = columns(table_name).find { |c| c.name == column_name.to_s }
+ options[:default] = column.default
+ else
+ raise ActiveRecordError, "No such column: #{table_name}.#{column_name}"
+ end
current_type = select_one("SHOW COLUMNS FROM #{quote_table_name(table_name)} LIKE '#{column_name}'")["Type"]
- execute "ALTER TABLE #{quote_table_name(table_name)} CHANGE #{quote_column_name(column_name)} #{quote_column_name(new_column_name)} #{current_type}"
+ rename_column_sql = "ALTER TABLE #{quote_table_name(table_name)} CHANGE #{quote_column_name(column_name)} #{quote_column_name(new_column_name)} #{current_type}"
+ add_column_options!(rename_column_sql, options)
+ execute(rename_column_sql)
end
# Maps logical Rails types to MySQL-specific data types.