Подтвердить уникальность объединения многих и многих в Rails

Скажем, у меня Проект, который во многих отношениях ассоциируется с тегом. Я использую has_many, поэтому у меня есть отдельная модель соединения.

Как создать проверку, которая проверяет уникальность модели соединения? Теперь у меня есть только

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

Но это не подтверждается при сохранении.

Ответ 1

Попробуйте 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

Ответ 2

Я думаю, что вы хотите validates_uniqueness_of:

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

Это то, что я использую, и хорошо работает.