ассоциация рельсов нетерпеливой загрузки с has_many: through

У меня проблемы с поиском способа связи с классами A и E. Вот подразумеваемый класс:

У A много B
B принадлежит A
B принадлежит C
A много C - B

C много D
D принадлежит C
D принадлежит E имя_класса C
C has_many от E до D

Хорошо, я знаю, что это сбивает с толку, поэтому я сделал схему и надеюсь, что она более понятна ...

введите описание изображения здесь

Мой вопрос в том, как связать класс A с классом E (на самом деле это класс C с определенной ролью). Как я могу использовать a.es (es => множественное число от E: s)?

Я пробовал от A has_many от E до C (на мой взгляд, это было хорошее решение, потому что A has_many C (через B) и C has_many E (через D)), но это вызывает ошибку:

ActiveRecord :: HasManyThroughSourceAssociationMacroError: недопустимый макрос отражения источника: has_many: through для has_many: es,: through =>: cs. Используйте: source, чтобы указать отражение источника

Кодирую на рельсах V2.3.9

Если у вас есть идеи, пожалуйста, скажите мне. Заранее спасибо.


person guts    schedule 26.05.2011    source источник


Ответы (1)


Хотя есть некоторые плагины, которые расширяют функциональность :through отношений, обычно невозможно использовать ActiveRecord для одновременной навигации по нескольким уровням. Предел обычно один :through, не более.

person tadman    schedule 26.05.2011
comment
но даже если я не могу сделать напрямую a.es, могу ли я хотя бы сделать a.cs.es (cs = ›множественное число от C, es =› множественное число от E), а затем я добавлю метод 'es' в A, который разрешает делать a.es. Не могли бы вы дать мне ссылку на один из этих плагинов? - person guts; 27.05.2011