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


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

以上です。

  1. コメントはまだありません。

  1. トラックバックはまだありません。