has_and_belongs_to_many предназначено для простых отношений "многие ко многим".
has_many: с другой стороны, предназначен для косвенных отношений «один ко многим» или «многих ко многим» со свойствами.
Если вы ищете только простые отношения «многие ко многим», я не вижу причин не использовать has_and_belongs_to_many.
Пример многие ко многим отношений:
Пользователь принадлежит к нулю или более групп, а группа имеет ноль или более членов (пользователей).
Пример многие ко многим отношений со свойствами:
Пользователь принадлежит к нулю или более групп, а группа имеет ноль или более членов, имеющих ряды.
Например, Алиса может быть администратором группы A и модератором в группе B. Вы можете сохранить это свойство в таблице соединений.
Пример непрямой один-ко-многим:
категория имеет ноль или более подкатегории, и каждый суб-категория имеет ноль или больше элементов.
Категория, следовательно, имеет ноль или более предметов через свои подкатегории.
Рассмотрим эти категории:
Продукты питания → Фрукты, Овощи
Фрукты → Яблоко, апельсин и т.д.
Овощи → Морковь, сельдерей и т.д.
поэтому:
Продукты питания → Apple, Orange, морковь, сельдерей и т. Д.
Чтобы понять рекурсию, вы должны сначала понять рекурсию. Я думаю, что ваш ответ может быть более ясным или демонстративным в отношении отношений «многие ко многим» со свойствами по отношению к отношениям «многие-ко-многим» без свойств. –
Позвольте мне привести несколько примеров. –
+1, что на самом деле мне тоже помогло. –