プログラミング初心者です。
ポートフォリオの作成をある程度進めた段階でテーブルのカラム名にスペルミスがあったことに気づき、テーブルのカラム名とカラム名を使用している全てのファイルを変更しました。
※テーブルのカラム名変更まではRailsでのコマンドですが、全ファイルのカラム名置換はVSCodeでの操作になります。
環境
ruby '2.6.5'
rails '6.0.0'
エディタ VSCode
解決したいこと
店舗情報を保存するStoreモデルで、住所を保存するカラム名を"address"とするはずが、"adress"とスペルミスをしていました。
しかし"adress"という名前でビューやモデルなど複数のファイルに記述してしまっているため、全てのファイルで一個一個手直しするのは面倒です。
そのため1.テーブル上のカラム名を変更し、2.全ファイルのソースコード上のカラム名を変更していきます。
1.テーブル上のカラム名変更
下記のコマンドで、カラム名変更を記述するmigrationファイルを生成します。
$ rails generate migration rename_adress_column_to_stores
※adressとstoresの部分は、各自の変更前カラム名とモデル名を入れてください。
生成したmigrationファイルを以下のように編集します。
class RenameAdressColumnToStores < ActiveRecord::Migration[5.2]
def change
rename_column :stores, :adress, :address
end
end
DBへ反映させます。
$ rails db:migrate
これでテーブル上のカラム名は変更されました。
2.全ファイルのソースコード上のカラム名を変更
ここからはVSCodeでの操作となります。
クリックすると下のようにSearchフォームとReplaceフォームが出てきます。
以下の手順で全ファイルのソースコード上の変更したいカラム名を置換します。
①Searchフォームに変更前のカラム名(adress)を記述
②Replaceフォームに変更後のカラム名(address)を記述
(フォームの下に対象となるファイルがズラーっと表示されます)
③Replaceフォームの右側のアイコンをクリック
すると画面上部に下のような画像が表示されるのでReplaceを選択します。
これで全ファイルでの置換ができました。
ちなみにこの手順でやると、1.で生成したmigrationファイル内に記述されている変更前のカラム名も置換されるので、置換後に修正してください。
class RenameAddressColumnToStores < ActiveRecord::Migration[5.2]
#⬆︎AdressがAddressに置換されている
def change
rename_column :stores, :address, :address
#⬆︎adressがaddressに置換されている
end
end
修正
class RenameAdressColumnToStores < ActiveRecord::Migration[5.2]
def change
rename_column :stores, :adress, :address
end
end
この修正が入るのが嫌な場合は「全ファイルの置換」→「テーブル上の変更」の手順で実行すると、修正が不要になります。
参考にした記事
Rails カラム名変更方法
https://qiita.com/libertyu/items/93acd8733e34b1d0a63c
複数ファイルの同要素を一回で置換する裏技
https://kt-life.net/vs-code-alltikan/