Railsで作成したカラム名を変更する

FBCのdeviseプラクティスで作成したアプリのカラム名を変更したかったので方法を調べました。

結論

作成済みのカラム名の変更は以下手順で行う。

  1. カラム名変更用マイグレーションファイル作成
  2. マイグレーションファイルにカラム名変更の記述を追加
  3. マイグレーションファイルの反映
  4. カラム名に合わせた各ファイルの修正

実装例

usersテーブルのprofile カラムをself_introduction カラムに変更する。

1. カラム名変更用マイグレーションファイル作成

下記コマンドでカラム名変更用マイグレーションファイルを作成します。

$ rails g migration rename_変更前のカラム名_column_to_テーブル名(複数形)

今回の例だと下記のようになります。

$ rails g migration rename_profile_column_to_users
Running via Spring preloader in process 26148
      invoke  active_record
      create    db/migrate/20220922201420_rename_profile_column_to_users.rb

db/migrate/ 以下にマイグレーションファイルが作成されました。

2. マイグレーションファイルにカラム名変更の記述を追加

作成したマイグレーションファイルに下記のようにカラム名変更の記述を追加します。

rename_column :テーブル名(複数形), :変更前のカラム名, :変更後のカラム名

今回の例だと下記のようになります。 注意点としてカラム名に使える記号はアンダーバー(_)のみです。

# 作成したマイグレーションファイル

class RenameRememberDigesgtColumnToUsers < ActiveRecord::Migration[5.2]
  def change
    rename_column :users, :profile, :self_introduction
  end
end

3. マイグレーションファイルの反映

rails db:migrate コマンドでマイグレーションファイルを反映させます。

$ rails db:migrate
Running via Spring preloader in process 26549
== 20220922201420 RenameProfileColumnToUsers: migrating =======================
-- rename_column(:users, :profile, :self_introduction)
   -> 0.0078s
== 20220922201420 RenameProfileColumnToUsers: migrated (0.0078s) ==============

4. カラム名に合わせた各ファイルの修正

変更したカラム名に合わせて各ファイルを修正します。

  • controllerファイル
  • viewファイル
  • 言語化している場合は各localeファイル

以上でカラム名の変更は完了です。

まとめ

カラム名を曖昧に決めていたので余計な作業が増えてしまいました。 今後は後で修正することが無いようによく考えてカラム名を決めようと思います。

参照

Rails カラム名変更方法 - Qiita