Это может быть слишком много, чтобы спросить у Арела, я не уверен в отличном решении.В вашем случае это выглядит так, как будто все merchant_owners совместно используют одну и ту же таблицу посредников, поэтому имеет смысл захотеть объединиться из полиморфной ассоциации, но в целом полиморфные ассоциации могут относиться к различным моделям (для разных таблиц) в вашей модели данных.,Это может быть довольно уродливым в SQL и, вероятно, довольно медленным в общем случае, поэтому я ожидаю, что EagerLoadPolymorphicError существует.Для вашей ситуации может иметь смысл обойти что-то вроде:
Merchant.joins("INNER JOIN resellers on merchant_owner_id = resellers.id")
Конечно, было бы самым чистым, чтобы это объединение было областью действия для вашей модели, поэтому вы могли бы просто выполнить Merchant.joined_with_owners иSQL отправляется на уровень модели.Однако это не сработает, если у других моделей, не имеющих посредников, будет много продавцов.
Я немного удивлен, что вы видите ту же ошибку с Merchant.includes (: merchant_owner), я не вижу этого с похожими данными, даже когда я получаю доступ к различным атрибутам, но это может быть связано с различнымиРазличия.
Пытаетесь увеличить нагрузку из соображений производительности или из-за того, что у вас есть дополнительные предложения Arel where, которые зависят от атрибутов посредника?Если это из-за производительности, то лучше всего использовать SQL ...