rails association жаждет загрузки с помощью has_many: through

#ruby-on-rails #associations #eager-loading #has-many-through

#ruby-on-rails #ассоциации #нетерпеливая загрузка #имеет много сквозных

Вопрос:

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

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

C имеет много D
D принадлежит C
D принадлежит E имя_класса C
C имеет множество 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, чтобы указать отражение источника

Я пишу на rails версии V2.3.9

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

Ответ №1:

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

Комментарии:

1. но даже если я не могу сделать напрямую a.es могу ли я хотя бы сделать a.cs.es (cs => множественное число C, es => множественное число E), а затем я добавляю метод ‘es’ в A, который позволяет выполнять a.es . Не могли бы вы дать мне ссылку на один из этих плагинов, пожалуйста?