RoR: Как я могу гарантировать, что моему объекту назначен только один объект? - PullRequest
1 голос
/ 19 ноября 2008

В моем приложении Ruby on Rails есть таблица User и таблица Foo. У меня также есть таблица User_Foo, в которой хранятся данные перекрестных ссылок.

У меня есть все, чтобы мои представления работали так, как я хочу, однако теперь мне нужно убедиться, что один и тот же Foo не назначается моему Пользователю более одного раза.

Какой лучший способ сделать это?

Я предполагал, что мог бы использовать validates_uniqueness_of в моей модели, но это не будет специфичным для отдельного пользователя. Нужно ли делать это в обновлении? Я надеялся получить встроенный "Ruby Way" для этого.

1 Ответ

7 голосов
/ 19 ноября 2008

validates_uniqueness_of охватывает это, вам просто нужно добавить дополнительную опцию, чтобы получить желаемое поведение.

Предполагается, что у вас есть модель UserFoo для хранения отношения перекрестных ссылок (и вы не делаете это без модели). Следующая проверка не позволит дублировать ссылки foo-user.

class UserFoo < ActiveRecord::Base
  belongs_to :user
  belongs_to :foo
  validates_uniqueness_of :foo_id, :scope => :user_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...