2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails カラム名を変更かつ全てのファイルでカラム名を置換する(VSCode限定)

Posted at

プログラミング初心者です。
ポートフォリオの作成をある程度進めた段階でテーブルのカラム名にスペルミスがあったことに気づき、テーブルのカラム名とカラム名を使用している全てのファイルを変更しました。

※テーブルのカラム名変更までは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ファイルを以下のように編集します。

db/migrate/20210318072032_rename_adress_column_to_stores.rb
class RenameAdressColumnToStores < ActiveRecord::Migration[5.2]
  def change
    rename_column :stores, :adress, :address
  end
end

DBへ反映させます。

$ rails db:migrate

これでテーブル上のカラム名は変更されました。

2.全ファイルのソースコード上のカラム名を変更

ここからはVSCodeでの操作となります。

VSCodeの左側にある虫眼鏡マークをクリックします。
スクリーンショット 2021-03-18 16.27.58.png

クリックすると下のようにSearchフォームとReplaceフォームが出てきます。
スクリーンショット 2021-03-18 17.15.15.png

以下の手順で全ファイルのソースコード上の変更したいカラム名を置換します。
①Searchフォームに変更前のカラム名(adress)を記述
②Replaceフォームに変更後のカラム名(address)を記述
(フォームの下に対象となるファイルがズラーっと表示されます)
③Replaceフォームの右側のアイコンをクリック
スクリーンショット 2021-03-18 16.29.05.png

すると画面上部に下のような画像が表示されるのでReplaceを選択します。
スクリーンショット 2021-03-18 16.29.39.png

これで全ファイルでの置換ができました。

ちなみにこの手順でやると、1.で生成したmigrationファイル内に記述されている変更前のカラム名も置換されるので、置換後に修正してください。

db/migrate/20210318072032_rename_adress_column_to_stores.rb
class RenameAddressColumnToStores < ActiveRecord::Migration[5.2]
       #⬆︎AdressがAddressに置換されている
  def change
    rename_column :stores, :address, :address
                 #⬆︎adressがaddressに置換されている
  end
end

修正

db/migrate/20210318072032_rename_adress_column_to_stores.rb
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/

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?