というプロジェクトは、タグと多対多の関係にあるとします。私はhas_manyからまでを使用していますので、私は別の結合モデルを持っています。Railsで多対多関連の一意性を確認
結合モデルの一意性をチェックする検証を作成するにはどうすればよいですか?今私はただ持っている
has_many :tags, :through => :taggings, :uniq => true
しかし、それは保存時に検証されません。
というプロジェクトは、タグと多対多の関係にあるとします。私はhas_manyからまでを使用していますので、私は別の結合モデルを持っています。Railsで多対多関連の一意性を確認
結合モデルの一意性をチェックする検証を作成するにはどうすればよいですか?今私はただ持っている
has_many :tags, :through => :taggings, :uniq => true
しかし、それは保存時に検証されません。
これは、保存する前に結合モデルの検証を実行できるようにするものです。だからあなたの場合:
class Taggings
belongs_to :tags
validates_uniqueness_of :tag_id, :scope => :project_id
end
これは私が使用しているもので、うまく機能:
class Project
has many :tags, :through => :taggings
validates_associated :taggings
end
class Taggings
belongs_to :tags
#your validations here....
end
class Tag
has_many :taggings
end
私が何をしたいことはvalidates_uniqueness_ofだと思います。
こんにちは、 'project.tags << Tag.find_or_create_by_name"でプロジェクトに重複したタグを追加すると、 '' ActiveRecord :: ValidateError'例外が発生しますが、重複しないで静かに失敗する方法はありますか?タグが新しいときに問題なくタグを追加しますか?これを管理する最良の方法は何ですか?ありがとう –
おそらくそれを行う簡単な方法がありますが、これは重複しないものだけを追加すると思います: 'design_tags = Tag.find_or_create_by_name" Design " project.tags << design_tags.reject {| tag | project.tags.include?(タグ)} ' –