Railsでテーブルのカラム名を間違った時に変更する方法
開発をしていると、一度実装したものを変更しないといけないケースが多々発生しますよね。単純にミスで修正しないといけない場合もあれば、仕様変更でやむを得ず変更をしないといけない時もあります。
Ruby on RailsでWeb開発をしている場合に、テーブルのカラム名(項目名)を修正したい場合の手順について書いておきます。
1.変更用のマイグレーションファイルを作成する
最初に以下のコマンドでテーブル定義の変更用マイグレーションファイルを作成します。
rails generate migration rename_account_name_column_to_Accounts
上記コマンドの末尾にある『Accounts』がモデル名で、ここは複数形で指定します。次に指定したモデルの中の変更したい項目はrenameの後の『account_name』の部分です。
モデル名と変更したいカラム名の部分を、修正したい内容に置き換えてコマンドを実行してください。
2.マイグレーションファイルの修正
上記1.が正常に終了すると次のような内容でマイグレーションファイルが作成されているはずです。
class RenameAccountNameColumnToAccounts < ActiveRecord::Migration[5.2]
def change
end
end
そのファイルのchangeアクションに変更内容を定義します。次のようなイメージです。
class RenameAccountNameColumnToAccounts < ActiveRecord::Migration[5.2]
def change
rename_column :accounts, :account_name, :name
end
end
最初の『:accounts』が対象のモデル名、次の『:account_name』が変更前のカラム名、最後の『:name』が変更後のカラム名です。
つまり、Accountsテーブルにあるaccount_nameというカラムの名称を、nameに変更した形です。
3.データベースに反映させる
最後に次のコマンドでマイグレーションファイルの内容をデータベースに反映させます。
rails db:migrate
本番稼働し始めたら、既存のテーブル項目を変更することは、そんなにありませんが、開発中はカラム名を変更するケースもあるので、覚えておくと良いと思います。
この記事が気に入ったらサポートをしてみませんか?