Learn How Can You Change DB Migration Rename in Ruby on Rails

Learn How Can You Change DB Migration Rename in Ruby on Rails

rename_column :table, :old_column, :new_column
Update:
You'll probably want to create a separate migration to do this. (Rename FixColumnName as you will)
script/generate migration FixColumnName
# 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
    # rename back if you need or do something else or do nothing
  end
end

An update for Rails 3.1
While, the up and 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 happen 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 change_table to keep things a little neater.
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
Thank you, Luke && Turadg, for bringing up the topic.

Then just db:migrate as usual or however you go about your business.
Tags: Ruby on Rails Tutorials, Ruby on Rails Videos, Ruby Gems, Gems Use trick, Ruby code, Rails servers

Comments