ruby-on-rails - 渴望加载与 Kaminara 分页的多态关联

标签 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 in Pages#dashboard

Showing 'BLAH BLAH'/dashboard.html.erb where line #49 raised: Can not eagerly load the polymorphic association :news_source

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

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

非常感谢任何建议!

干杯。

最佳答案

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

此错误可能发生是因为 includes决定打电话 eager_load如果需要查询关联条件,多态关联只支持preload .它在 documentation

关于ruby-on-rails - 渴望加载与 Kaminara 分页的多态关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5977389/

相关文章:

javascript - rails : change CSS property dynamically?

javascript - 如何使用 ERB 和 JQuery 修改元素样式属性并使用 % 符号值?

ruby-on-rails - Rails - Facebook Connect,从哪里开始

ruby-on-rails - 重新启动部署在 Passenger 上的 Rails 应用程序时切换 ruby

mysql - 数据库设计 : how to design this peculiar relationship

ruby-on-rails - 小型 Controller 上的代码重构(瘦 Controller 胖模型)

ruby-on-rails - 如果定义了?(ActionController) 并定义了?(ActionController::Base)

ruby-on-rails - Rails 3 中的 SqlSessionStore

sql-server - 保持此架构清晰的最佳方法是什么?

sequelize.js - 如何通过 sequelize 中的 setAssociation 选项在连接表中设置参数?