rails で複数一意制約

複数一意制約とは

複数一意制約とは、複数のカラムでセットでユニークにすること。

たとえば、電話番号の連絡先リストを作るとき。 {name: “daisuke”, phone: 111 }が登録されていたとする。

  • {name: “daisuke”, phone; 111 } は登録させたくない
  • {name: “taro”, phone: 111} は登録させたい

つまり、電話番号だけは重複してもいいけど、名前と合わせて重複させたくない。

対応方法

class User < ActiveRecord::Base
   validates :name,:uniqueness => {:scope =>:phone }
end

でOK。

参考URL

http://yoshifumisato.jeez.jp/wordpress/post/rails/902 http://d.hatena.ne.jp/suginoy/20110507/p1