Может ли модель принадлежать многим моделям, имеющим одну из первых моделей?
У меня есть две таблицы.users
superpowers
Я хочу каждый user
быть ограниченным одним superpower
, Но разные users
может иметь то же самое superpower
, (у Сэма может быть огонь, у Джона может быть молния, у сары также может быть молния. Но у каждого пользователя может быть только одна сверхдержава)
Я хочу сохранить внешний ключ в пользовательской таблице.
Будет has_one
а также belongs_to
отношения подойдут для этого?
user
has_one
superpower
,superpower
belongs_to
user
Руководство по рельсам говорит, что has_one устанавливает отношения один на один. Но тонкий нюанс не рассматривается: является ли "принадлежащая" модель (т.е. superpowers) can belong to multiple "has_one-ing" models (i.e.
users`), где каждая ассоциация является отношением один к одному (например, у john есть молния, а у sarah также есть молния).
ИЛИ, означает ли это, что и модель "принадлежности", и модель "наличия" должны быть уникальными во всех ассоциациях? (например, если у Джона есть освещение, у Сары не может быть молнии)?
1 ответ
Глядя на ваше описание (особенно часть о том, что внешний ключ находится в users
таблица), отношения должны быть:
Superpower.has_many :users
User.belongs_to :superpower
belongs_to
Часть ассоциации всегда в модели с внешним ключом.