3

我正在尝试加载多态关联,同时还使用 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) )时,错误就会消失。

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

将不胜感激任何建议!

干杯。

4

1 回答 1

0

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

可能会发生此错误,因为如果需要查询关联的条件,则includes决定调用,并且多态关联仅支持. 它在文档中eager_loadpreload

于 2017-10-19T20:53:42.253 回答