[Ruby on Rails] DBのカラムのデフォルト値を変更する方法

Tadashi Shigeoka ·  Mon, April 30, 2012

Ruby on Rails 3.2.3 にて、DBのカラムのデフォルト値を変更したのでメモ。

change_column_default(table_name, column_name, default)
Sets a new default value for a column.

Examples change_column_default(:suppliers, :qualification, ‘new’) change_column_default(:accounts, :authorized, 1) change_column_default(:users, :email, nil)

・引用元:ActiveRecord::ConnectionAdapters::SchemaStatements はてなブックマーク - ActiveRecord::ConnectionAdapters::SchemaStatements

例えば、articles テーブルの title カラムの定義が「String型、NULL制約:有、デフォルト値:空文字」となっているのを、「String型、NULL制約:無、デフォルト値:NULL」に変更したい場合、マイグレーションファイルは下記のように書きます。

class ChangeTitleNullToArticles < ActiveRecord::Migration
  def up
    change_column :articles, :title, :string, null: true
    change_column_default :articles, :title, nil
  end

  def down
    change_column :articles, :title, :string, null: false
    change_column_default :articles, :title, ""
  end
end

以上です。