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

时间:2011-05-12 11:40:59

标签: ruby-on-rails ruby-on-rails-3 polymorphic-associations eager-loading kaminari

我正在尝试加载多态关联,同时使用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   在Pages#dashboard

中      

显示'BLAH BLAH'/ dashboard.html.erb   第49行提出:不能急切   加载多态关联   :新闻来源

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

有人有什么想法吗? This article建议支持使用多态关联的急切加载,但前提是可能作为作用域应用于Relation的条件/顺序不引用任何其他表(如果是,则Rails使用LEFT OUTER)用于渴望加载的JOIN方法,它不能用于多态关联)。那么:Kaminari会引用另一张桌子吗?

非常感谢任何建议!

干杯。

1 个答案:

答案 0 :(得分:0)

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

可能会发生此错误,因为includes如果需要查询关联条件,则决定调用eager_load,并且只有preload支持多态关联。它位于documentation