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) ===================
参考サイト
- Railsのユニーク制約の方法
- validates :uniquenessはuniquenessを保証しないのでDBにindexをつけましょう!
- Rails3 複数のカラムでユニーク
- rails3 generate migration add_columnとか