Rails уникальные теги для каждого пользователя - PullRequest
0 голосов
/ 27 октября 2018

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

Отношения будут выглядеть так:

Package
  has_many :tags
  belongs_to :user

User
  has_many :packages
  has_many :tags

Tag
  has_many :packages
  belongs_to :user

Какие ассоциации следует использовать?

Должен ли я пойти с has_and_belongs_to_many на Метка и Пакет или has_many_through?Или просто has_many на каждой модели?

1 Ответ

0 голосов
/ 27 октября 2018

Вы не можете иметь Package has_many :tags и Tag has_many :packages одновременно. Правильно, вместо этого следует использовать либо has_and_belongs_to_many, либо has_many through. Разница между ними заключается в том, как вы хотите обрабатывать таблицу соединений.

Если его единственная цель - удерживать соединения между tags и packages, тогда можно использовать has_and_belongs_to_many.

В противном случае, если вы хотите сохранить некоторую дополнительную информацию в таблице соединений (например, вес тега для пакета), то это может быть отдельная модель; таким образом, ассоциация должна быть has_many through

См. этот ответ также.

Как насчет связей с моделью User: поскольку и Package, и Tag принадлежат User, обе таблицы packages и tags материализуют эту связь в поле user_id. Так что User has_many :packages и User has_many :tags. Других вариантов нет.

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