で間違ったカラム名を変更する方法
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) ==================================