🦔
【Rails】change_column_default を使うときの注意点
結論
Railsのマイグレーションでchange_column_defaultメソッドを使うときはfrom, toオプションをつけよう。
詳細
change_column_defaultメソッドを使うとき、fromやtoオプションをつけないとDBのロールバックができない。
例えば、あるテーブルの真偽値型カラムにfalseのデフォルト値を設定したいとき。次のようなマイグレーションを書くとロールバックができない。
change_column_default :some_table, :some_boolean_column, false
rails db:rollbackを実行すると次のようなエラーが発生する。
change_column_default is only reversible if given a :from and :to option.
DBをロールバックできるようにしておくことは整合性を保つのに重要。よってメッセージにあるとおり、fromとtoオプションを使ってマイグレーションを書くようにする。
change_column_default :some_table, :some_boolean_column, from: nil, to: false
Discussion