で間違ったカラム名を変更する方法

class Resource < ActiveRecord::Base
    attr_accessible :resource_id, :type_id, :user_id 
    belongs_to :resource_type

この中のtype_idをbelongs_toのresource_typeのidを紐づけたいと思っていたんだけど、間違ってカラム名をつけてDBに作ってしまった。


↓本当はしたいカラム名(type_id => resource_type_id )

class Resource < ActiveRecord::Base
    attr_accessible :resource_id, :resource_type_id, :user_id 
    belongs_to :resource_type
# $ rails g migration Renameカラム名Toテーブル名 新しいカラム名と型
$ rails g migration RenameTypeToResource resource_type:integer
      invoke  active_record
      create    db/migrate/20130106071025_rename_type_to_resource.rb

生成されたファイルを編集する
↓最初はこんな感じ

class RenameTypeToResource < ActiveRecord::Migration                                                                                                
  def up
  end

  def down
  end
end

↓追記する

class RenameTypeToResource < ActiveRecord::Migration                                                                                                
  def up
    rename_column :resources, :type_id, :resource_type_id
                              #:テーブル名 :古いカラム名 :新しいカラム名
  end

  def down
    rename_column :resources, :resource_type_id, :type_id
                              #:テーブル名 :新しいカラム名 :古いカラム名
  end
end

反映させる

$ rake db:migrate
==  RenameTypeToResource: migrating ===========================================
-- rename_column(:resources, :type_id, :resource_type_id)
   -> 0.0312s
==  RenameTypeToResource: migrated (0.0313s) ==================================