Это упрощенный пример того, чего я пытаюсь достичь, я относительно новичок в Rails и изо всех сил пытаюсь разобраться в отношениях между моделями.
У меня две модели: модель User
и модель Category
. Пользователь может быть связан со многими категориями. Определенная категория может отображаться в списке категорий для многих пользователей. Если определенная категория удалена, это должно быть отражено в списке категорий для пользователя.
В этом примере:
Моя таблица Categories
содержит пять категорий:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ID | Name | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 1 | Sports | | 2 | News | | 3 | Entertainment | | 4 | Technology | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Моя таблица Users
содержит двух пользователей:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ID | Name | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 1 | UserA | | 2 | UserB | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Пользователь может выбрать Спорт и Технологии как свои категории
Пользователь может выбрать Новости, Спорт и Развлечения
Категория спорта удалена, и списки категорий UserA и UserB отражают удаление
Я играл с созданием таблицы UserCategories
, которая содержит идентификаторы как категории, так и пользователя. Этот вид работал, я мог искать имена категорий, но я не мог получить каскадное удаление для работы, и все решение просто показалось неправильным.
Примеры использования функций belongs_to и has_many, которые я нашел, похоже, обсуждают отображение взаимно-однозначного отношения. Например, комментарии к сообщению в блоге.
- Как вы представляете это отношение "многие ко многим", используя встроенную функцию Rails?
- Использует ли отдельную таблицу между двумя жизнеспособными решениями при использовании Rails?