マイグレーションファイルでユニークインデックスを指定

マイグレーションファイルの中でテーブルにユニークインデックスを追加するにはadd_indexで指定する。
インデックスを削除する場合はremove_indexで指定する。

マイグレーションファイルの指定例
class CreateNikonikoCalendars < ActiveRecord::Migration
  def self.up
    # ニコニコカレンダー
    create_table :nikoniko_calendars do |t|
      t.integer :nikoniko_master_id, :null => false
      t.string :comment
      t.date :nikoniko_date, :null => false
      t.integer :user_id, :null => false

      t.integer   :created_user_id, :null => false
      t.integer   :updated_user_id, :null => false
      t.timestamps
    end

    add_index :nikoniko_calendars, [:user_id,:nikoniko_date], :name=>"unique_index", :unique=>true

    create_table :nikoniko_masters do |t|
      t.string :label, :null => false
      t.timestamps
    end

  end

  def self.down
    remove_index :nikoniko_calendars, :name=>"unique_index"
    drop_table :nikoniko_calendars
    drop_table :nikoniko_masters
  end
end
参考書籍

P127

Railsレシピブック 183の技

Railsレシピブック 183の技