Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
30
Help us understand the problem. What is going on with this article?
@toda-axiaworks

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

30
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
30
Help us understand the problem. What is going on with this article?