ruby-on-rails - 如何对来自多个模型的记录进行分页? (我需要多态连接吗?)

标签 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 will-paginate kaminari

经过相当多的搜索,我仍然有点迷失。还有一些其他类似的问题涉及对多个模型进行分页,但它们要么没有答案,要么分别对每个模型进行分页。

我需要一次对帐户的所有记录进行分页。

class Account
  :has_many :emails
  :has_many :tasks
  :has_many :notes
end

所以,我想找到 30 个最近的“东西”,不管它们是什么。使用当前的分页解决方案,这甚至可能吗?

喜欢使用预先加载和 Kaminari 或 will_paginate 的某种组合?

或者,我应该首先设置所有这些东西的多态连接,称为 Items.join。然后对最近的 30 个项目进行分页,然后查找这些项目的关联记录。

如果是这样,我不确定该代码应该是什么样子。有什么建议?

哪种方式更好? (甚至可能)

Rails 3.1、Ruby 1.9.2、应用程序不在生产中。

最佳答案

使用 will_paginate :

@records = #do your work and fetch array of records you want to paginate ( various types )

然后执行以下操作:
current_page = params[:page] || 1
per_page = 10
@records = WillPaginate::Collection.create(current_page, per_page, records.size) do   |pager|
pager.replace(@records)
end

那么在你看来:
<%=will_paginate @records%>

关于ruby-on-rails - 如何对来自多个模型的记录进行分页? (我需要多态连接吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7957762/

相关文章:

ruby-on-rails - Rails 3 - 权限错误和奇怪的 TypeError

ruby-on-rails - 在 Ruby on Rails 3 中使用小数

ruby-on-rails - Rails 尝试从控制台调用 Controller 方法

ruby-on-rails - 在 Virtual Box Ubuntu 12.04 中运行 Rails 非常慢

ruby-on-rails - 在自定义 Controller 中设计资源和资源名称助手

ruby-on-rails-3 - 如何将背景/填充颜色添加到 Prawn 中的 bounding_box

ruby - 如何每月在 Heroku 运行一次 Scheduler 插件?

ruby-on-rails - 使用 Active Admin 在过滤器之前跳过

javascript - 在控制台中获取消息但它不会更新 Rails + vuejs

ruby-on-rails - 我可以使用 Rails 3.2.3 更新到 Ruby 2.1.2 吗?