2016-05-12 4 views
2

postモデルとkeywordモデル(name属性)を持ち、投稿にhas_manyキーワードがあります。 私は、キーワードの一意性を検証したいと思っています。親との一意性を確認する

意味は:first_postsecond_postは両方ともキーワードappleを持つことができますが、それらは2回持つことはできません。私は重複を避けたいです。

私はちょうどkeywordモデルに追加する場合:

validates :name, uniqueness: true 

それはすべてのキーワードの中nameの一意性をチェックします。 私はそれが投稿のためだけであるべき正確な方法はありますか?

編集:私は追加しなかった :

validates :name, uniqueness: { scope: post_id } 

keyword.rbファイルへ。

undefined local variable or method `post_id' for #<Class:0x007f8fa46b7890> 

をしかし、私のキーワードモデルはpost_idの属性を持つ: 私は今、エラーを取得します。これを引き起こしている可能性のあるものは何ですか?

+0

[複数の属性の一意性のレール3の検証](http://stackoverflow.com/questions/3276110/rails-3-validation-on-uniqueness-on-multiple-attributesの可能性のある重複) – Pavan

答えて

2

スコープを使用できます。

:scope - One or more columns by which to limit the scope of the uniqueness constraint.

validates :name, uniqueness: { scope: :post_id } 
+0

あなたの答えをありがとう。しかし、フォームを送信するときにこのエラーが発生します。 未定義のローカル変数または#<クラス:0x007f8fa46b7890>の 'post_id 'メソッド しかし、キーワードモデルにはpost_id属性があります。これを引き起こしている可能性のあるものは何ですか? –

+1

申し訳ありませんが悪いです。私の答えにはタイプミスがありました。 'post_id'はシンボルでなければなりません。それを修正した – Santhosh

関連する問題