49
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-08-09

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

49
39
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
49
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?