渴望加载与 Kaminara 分页的多态关联

Posted

技术标签:

【中文标题】渴望加载与 Kaminara 分页的多态关联【英文标题】:Eager loading a polymorphic association with Kaminara pagination 【发布时间】:2011-08-24 01:24:52 【问题描述】:

我正在尝试加载多态关联,同时还使用 Kaminari gem 进行分页:

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

我收到错误消息:

ActiveRecord::EagerLoadPolymorphicError 在页面中#dashboard

显示 'BLAH BLAH'/dashboard.html.erb 第 49 行提出的地方:不能急于求成 加载多态关联 :news_source

当我删除 Kaminari 范围 ( .page[:page]).per(10) ) 时,错误就会消失。

有人有什么想法吗? This article 建议支持使用多态关联进行预加载,但前提是可能应用于 Relation 作为范围的条件/顺序不引用任何其他表(如果这样做,则 Rails 使用 LEFT OUTER JOIN 方法对于不能在多态关联上工作的急切加载)。那么:Kaminari 是否引用了另一个表?

不胜感激任何建议!

干杯。

【问题讨论】:

您可以编辑您的帖子并添加模型吗? 或者类似:Kaminari.paginate_array(@ news_items.all).page(params[:page]).per(10) 这个问题已经过去了 6 个多月,我认为我的代码已经很好地、真正地继续前进了。今天晚些时候会尝试回顾一下。 您是否尝试在您的表达式末尾添加includes(:news_source)? 【参考方案1】:

您应该始终使用preload 进行多态关联。

这个错误可能是因为includes决定在需要查询关联条件时调用eager_load,而多态关联只有preload支持。在documentation

【讨论】:

以上是关于渴望加载与 Kaminara 分页的多态关联的主要内容,如果未能解决你的问题,请参考以下文章

mybatis collection 一对多关联查询,单边分页的问题总结!

如何在启用分页的 UIScrollView 中延迟加载 100 多个页面?

PromsieKit + Alamofire 用于加载分页的 HTTP 数据

带有“加载更多”分页的列表的 BeautifulSoup 子页面

优化分页的查询

Yii 2.0实现联表查询加搜索分页的方法示例