🦔
【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