Let's imagine an issue. For example, you needed to create a database column in Rails, called
hype.codes. And you mistyped it as
hyde.codes. How to solve this issue? Let's figure it out!
rename_column :table, :old_column, :new_column
You'll probably want to create a separate migration to do this. (Rename FixColumnName as you will)
script/generate migration FixColumnName # it creates db/migrate/xxxxxxxxxx_fix_column_name.rb
Then edit the migration to do your will.
# db/migrate/xxxxxxxxxx_fix_column_name.rb class FixColumnName < ActiveRecord::Migration def self.up rename_column :table_name, :old_column, :new_column end def self.down end end
Small update for Rails 3.1
down methods still apply. Rails 3.1 receives a change method that "knows how to migrate your database and reverse it when the migration is rolled back without the need to write a separate down method"
rails g migration FixColumnName class FixColumnName < ActiveRecord::Migration def change rename_column :table_name, :old_column, :new_column end end
If you need to have a whole bunch of columns to rename, or something that would have required repeating the table name over and over again.
rename_column :table_name, :old_column1, :new_column1 rename_column :table_name, :old_column2, :new_column2 ...
You could use
class FixColumnNames < ActiveRecord::Migration def change change_table :table_name do |t| t.rename :old_column1, :new_column1 t.rename :old_column2, :new_column2 ... end end end
Small update for Rails 4
While creating a
Migration as for renaming a column, Rails 4 generates a
change method instead of
down as mentioned in the above answer. The generated
change method is as below :
$ > rails g migration ChangeColumnName
which will create a migration file similar to this :
class ChangeColumnName < ActiveRecord::Migration def change rename_column :table_name, :old_column, :new_column end end