34
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

Railsでカラムのデフォルト値を変更する方法

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メソッドを積極的に使用するようにすると良いと思います。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
34
Help us understand the problem. What are the problem?