Стремление загрузить полиморфную ассоциацию с пагинацией Kaminara - PullRequest
3 голосов
/ 12 мая 2011

Я пытаюсь загрузить полиморфную ассоциацию, в то же время разбивая на страницы с помощью гема Kaminari:

@news_items = NewsItem.includes(:news_source).not_outdated
.where(:group_id => group_ids).order("created_at DESC").page(params[:page]).per(10)

Я получаю сообщение об ошибке:

ActiveRecord ::EagerLoadPolymorphicError в Pages # dashboard

Отображение 'BLAH BLAH' / dashboard.html.erb, где поднята строка # 49: Невозможно быстро загрузить полиморфную ассоциацию: news_source

Когда я удаляюОбласть действия Каминари (.page [: page]). Per (10)), тогда ошибка исчезает.

У кого-нибудь есть идеи? В этой статье предполагается, что поддерживается активная загрузка с полиморфными ассоциациями, но только в том случае, если условия / порядок, которые могут быть применены к Relation в качестве области действия, не ссылаются ни на какие другие таблицы (если они это делают, тогда Rails используетметод LEFT OUTER JOIN для активной загрузки, которая не может работать с полиморфными ассоциациями).Итак: Каминари ссылается на другую таблицу?

Буду признателен за любой совет!

Приветствия.

1 Ответ

0 голосов
/ 19 октября 2017

Вы всегда должны использовать preload для полиморфных ассоциаций.

Эта ошибка может произойти, потому что includes решает вызвать eager_load, если ему необходимо запросить условия для ассоциации, и полиморфные ассоциации поддерживаются только preload. Это в документации

...