nested_formでuniquenessのようなバリデーションをかけたいです。
モデル
Artice(記事)
Tag(タグ)
以上のようなモデルがあり、1つの記事にいくつかのタグを付けます。
記事を作成する際に、タグも作成したく、nested_form_forで実現させようと考えています。
article.rbを以下のように実装しました。バリデーション部分は省略しています。
Ruby
1class Article < ApplicationRecord 2 has_many :tags 3 accepts_nested_attributes_for :tags, allow_destroy: true 4 5 validate :validate_uniqueness 6 7 def validate_uniqueness 8 #self.tags間でのユニークのバリデーション 9 errors[:base] << "タグが重複しています" 10unless self.tags.pluck(:name).uniq.size == self.tags.count 11 end 12end
新規作成時は上記でうまくいくのですが、
更新時には
self.tags = すでにDBに保存されているタグたち ≠ 更新したいタグたち
となっており、モデル内でバリデーションをかけられないでいます。
nested_form_forの子モデル間でバリデーション をかけたい場合どのようにすれば良いでしょうか?