💥
RailsでDBカラムを削除する手順
よくある手順ですが忘れがちなので、まとめ直します。
strong_migrations gemのREADMEに書いてあることそのままです。
なお、都合3回のリリースが必要になります。
1. 削除対象のカラムを使わなくするリリース
実際にカラム(some_column
)を使っている箇所があったら削除します。
さらに、モデルにignored_columns
を追加して、削除予定のカラムがDB上にあったとしても参照しないように宣言します。
class User < ApplicationRecord
+ self.ignored_columns += ["some_column"]
end
2. カラムを削除するリリース
以下のようなマイグレーションを作り、実際にカラムを削除します。
class RemoveSomeColumnFromUsers < ActiveRecord::Migration[7.1]
def change
remove_column :users, :some_column
end
end
なお、strong_migrationsを使っている場合は safety_assured
で囲みます。
class RemoveSomeColumnFromUsers < ActiveRecord::Migration[7.1]
def change
safety_assured { remove_column :users, :some_column }
end
end
3. ignored_columnsを除去するリリース
ignored_columns
は用済みなので削除します。
class User < ApplicationRecord
- self.ignored_columns += ["some_column"]
end
Discussion