Ruby on Rails 3.2.3 にて、DBのカラムのデフォルト値を変更したのでメモ。
change_column_default(table_name, column_name, default) Sets a new default value for a column.・引用元:ActiveRecord::ConnectionAdapters::SchemaStatementsExamples change_column_default(:suppliers, :qualification, ‘new’) change_column_default(:accounts, :authorized, 1) change_column_default(:users, :email, nil)
例えば、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
以上です。