Remove_Culumns_Safety
Railsでカラムを安全に削除する方法
方法
1. 削除するカラムを参照している実装を全て修正
2. ActiveRecord に ignore_columns をつける
- ActiveRecordはスキーマキャッシュでカラム情報をキャッシュしているため、いきなりカラムを削除するとそのカラムがまだ存在するかのように振る舞ってしまう
ignore_columns に指定されているカラムはスキーマ読み込み時に除外される
class Post < ApplicationRecord
self.ignored_columns = [:title]
end
3. 本番で問題ないことを確認
4. カラムを削除
class RemoveTitleFromPosts < ActiveRecord::Migration[6.1]
def change
remove_column :posts, :title, :string
end
end
5. ignore_columns を削除する
# 以下実装を削除する
class Post < ApplicationRecord
self.ignored_columns = [:title]
end
参考