🦔

【Rails】change_column_default を使うときの注意点

2024/06/25に公開

結論

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