验证Rails中多对多关联的唯一性

时间:2009-09-14 13:28:50

标签: ruby-on-rails validation activerecord

说我有项目,即与标记的多对多关联。我正在使用 has_many到,所以我有单独的连接模型。

如何创建验证,检查连接模型的唯一性?现在我只有

has_many :tags, :through => :taggings, :uniq => true

但是这不会在保存时验证。

2 个答案:

答案 0 :(得分:15)

我认为你想要的是validates_uniqueness_of

class Taggings
  belongs_to :tags
  validates_uniqueness_of :tag_id, :scope => :project_id
end

这就是我正在使用的,并且效果很好。

答案 1 :(得分:5)

试试validates_associated

我认为应该允许在保存之前运行连接模型验证。所以在你的情况下:

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