Migrationファイルの作成
railsでデータベースに変更を加える場合はまずはマイグレーションファイルを作成することになります。
rails generate migration [マイグレーションファイル名]
コマンドでマイグレーションファイルを作成する。マイグレーションファイルのファイル名は変更するテーブル名やカラム名をどう変更するのかなどを書くと良いです。
仮に今回はuserテーブルのis_flagカラムをfalseからtrueに変更することにするので、マイグレーションファイル名はchange_is_flag_default_on_usersとします。特にファイル名などを書いておくと、マイグレーションの数が増えた時にファイルを見つけやすくなったりするので大事です。
change_column_defaultメソッドでカラムのデフォルト値を変更する
change_column_defaultメソッド使うとマイグレーションファイルのchangeメソッドは以下のようになります。usersテーブルのデフォルト値をfalseからtrueに変更するので、
def change
change_column_default :users, :is_flag, from: false, to: true
end
以前はchange_column_defaultメソッドの存在を知らなかったので、
def up
change_column :users, :is_flag,:boolean, default: true
end
def down
change_column :users, :is_flag,:boolean, default: false
end
のように冗長な書き方をしてしまっていました。
change_column_defaultメソッド使う利点として、デフォルト値をシンプルに設定出来るだけでなく、rails db:rollbackコマンドでデータベースをロールバックさせる際に特に有効でupメソッドとdownメソッドの2つのメソッドを用意することなくrails db:rollbackを実行出来ることも利点の1つになります。
以上の理由からRailsのマイグレーション機能でカラムのデフォルト値を変更する場合にはchange_column_defaultメソッドを積極的に使用するようにすると良いと思います。