Особое отношение один ко многим - PullRequest
1 голос
/ 16 августа 2011

У меня есть приложение Rails 3.1 с моделью User и моделью House (это похоже на группу). Я установил отношение «многие ко многим» с моделью соединения Membership между этими двумя, и существуют методы для управления ролями пользователя в каком-либо доме в модели соединения.

Но моя проблема в том, что у пользователя есть только один дом, а не много. Поэтому я всегда должен делать user.houses.first, чтобы получить его дом (я установил дом помощника, который делает это), но дизайн не очень хороший, поэтому я попытался поставить has_one :membership и has_one :house, :through => :membership вместо has_many :memberships и has_many :houses, :through => :memberships. Но я получаю сообщение об ошибке каждый раз, когда пытаюсь получить доступ к дому с User.

Как можно установить это отношение «один ко многим» с таблицей соединений, как я пытался это сделать?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 16 августа 2011

Если вы собираетесь использовать отношение один ко многим, тогда ассоциация должна быть.

Дом

has_many : членство

has_many : пользователи:: through =>: членство

Пользователь

has_one : членство

has_one : house,: through =>: членство

0 голосов
/ 16 августа 2011

Я не могу придумать, как это сделать с отношениями, однако вы можете оставить это как множественное число, а затем просто определить дом в пользователях:

class User 
  has_many :memberships
  has_many :houses, :through => :memberships

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