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