前提
ユーザー(User)テーブルに管理者フラグ(admin_flag)があるとします。
今回はデフォルトをtrueからfalseに変更してみたいと思います。
*今回はboolean型を操作しますが数値/文字列でも同様に変更可能です。
Table name: users
admin_flag :boolean default(TRUE)
手順
マイグレーションファイルを作成
デフォルト値変更のためのmigrationファイルを作成します。
今回はデフォルト値を変更するので
Change[カラム名]DefaltTo[テーブル名]
というマイグレーションファイル名にしています。
具体的には
rails g migration ChangeAdminFlagDefaultToUsers
でファイルを作成しました。
マイグレーションファイルの中身を記述
実際に書くのは1行追加だけになります。
def change
# change_column_default :テーブル名, :カラム名, from: 変更前の値, to: 変更したい値
change_column_default :users, :admin_flag, from: true, to: false
end
変更自体は
# change_column_default :テーブル名, :カラム名, 変更したい値
change_column_default :users, :admin_flag, false
だけで可能ですが、ロールバック時にdownしなくて良いようにfrom/to
を指定しておいた方が楽そうです!
マイグレーションファイル実行
rails db:migrate
以上でデフォルト値が変更出来たかと思います。
余談
デフォルト値の設定をなくしたい場合
# change_column_default :テーブル名, :カラム名, from: 変更前の値, to: nil
change_column_default :users, :admin_flag, from: true, to: nil
デフォルト値を追加したい場合
# change_column_default :テーブル名, :カラム名, from: nil, to: 変更したい値
change_column_default :users, :admin_flag, from: nil, to: false