FBCのdeviseプラクティスで作成したアプリのカラム名を変更したかったので方法を調べました。
結論
作成済みのカラム名の変更は以下手順で行う。
実装例
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ファイル
以上でカラム名の変更は完了です。
まとめ
カラム名を曖昧に決めていたので余計な作業が増えてしまいました。 今後は後で修正することが無いようによく考えてカラム名を決めようと思います。