отношения has_many с парами уникальности - PullRequest
2 голосов
/ 05 марта 2012

У меня проблемы с пользовательскими парами уникальности в моем приложении ...

У меня есть пользователи, с которыми можно связать некоторые контакты. Я использую таблицу отношений для своих ссылок (ведьма также имеет атрибут уровня - для разных уровней отношений)

Так что у меня есть пользователи, контакты и отношения. Моя проблема в том, что пара contact_id и user_id должна быть uniq (они могут быть связаны только один раз).

contact.rb

has_many: отношения,: зависимый =>: уничтожить

has_many: пользователи,: through =>: отношения,: uniq => true

user.rb

has_many: отношения,: зависимый =>: уничтожить

has_many: контакты,: через =>: отношения,: uniq => true

relation.rb

принадлежит_ пользователю:

принадлежит_: контакт

Я не знаю, должен ли я использовать foreign_key или что-то еще, мне просто нужно что-то простое:)

ура

Ответы [ 2 ]

1 голос
/ 09 марта 2012
class Relation < ActiveRecord::Base
      belongs_to :user
      belongs_to :contact
      validates_uniqueness_of :contact_id, :scope => :user_id

    end
1 голос
/ 05 марта 2012

Вы можете использовать опцию :scope при проверке уникальности. Что-то вроде validates_uniqueness_of :contact, :scope => :user означает, что для данного пользователя не будет дублирующихся контактов. Так что если вы проверяете каждый из ваших атрибутов, относящихся к другому, я думаю, что это приведет к тому, что вы хотите. Возможно, есть лучший способ (хотя я, очевидно, не знаю).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...