У меня есть две таблицы. users
superpowers
Может ли модель принадлежать многим моделям, которые имеют первую модель?
Я хочу, чтобы каждый user
быть ограничен одним superpower
. Но разные users
могут иметь одинаковые superpower
. (у sam может быть огонь, у john может быть молния, у sarah также может быть молния. Но каждый пользователь может иметь только одну супермодуль)
Я хочу сохранить внешний ключ в таблице пользователя.
Будет ли 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.
пользователей »), где каждая ассоциация является взаимно-однозначной (например, john имеет молнию, а sarah также имеет молнию).
ИЛИ, означает ли это, что как «принадлежность», так и «имеющая» модель должны быть уникальными во всех ассоциациях? (например, если у Джона есть освещение, у сары не может быть молнии)?
Я бы обычно так делал, но тогда у моих сверхдержав будет переменное количество столбцов, равное количеству пользователей. он будет продолжать расти, что бесполезно. Поскольку предел является пользователем, имеющим одну сверхдержаву, я хочу закрепить внешний ключ в пользовательской таблице, а не наоборот. – ahnbizcad
На всякий случай я не использую правильную формулировку, когда я говорю, что внешний ключ находится в таблице пользователей, я имею в виду, что таблица users имеет столбец, содержащий идентификатор сверхдержавы. – ahnbizcad
@gwho, поэтому я понял это правильно. То, что я не понимаю, - это ваше утверждение о увеличении числа столбцов в таблице супердержав. Не могли бы вы объяснить, что вы имеете в виду? –