Ruby on RailsでDBにユニーク制約を付与する方法

やりたいこと

  • RailsでDBにユニーク制約を付与したい。

方法

マイグレーションファイルを新規作成してユニークインデックスを追加
$ rails generate migration AddIndexAnimeIdAndChapterToChapters
      invoke  active_record
      create    db/migrate/20130429145932_add_index_anime_id_and_chapter_to_chapters.rb
  • ユニークインデックス追加を設定
$ vi db/migrate/20130429145932_add_index_anime_id_and_chapter_to_chapters.rb
class AddIndexAnimeIdAndChapterToChapters < ActiveRecord::Migration
  def change
    add_index :chapters, [:anime_id, :chapter], :unique => true
  end
end
$ rake db:migrate
==  AddIndexAnimeIdAndChapterToChapters: migrating ============================
-- add_index(:chapters, [:anime_id, :chapter], {:unique=>true})
   -> 0.0204s
==  AddIndexAnimeIdAndChapterToChapters: migrated (0.0207s) ===================

参考サイト