在活动记录中使用find_each进行分页

时间:2012-08-31 08:08:01

标签: ruby-on-rails activerecord will-paginate

我有一大堆要显示的记录,并使用find_each打破了查询:

 - Syslog.find_each(:batch_size => 2000) do |s|
   = s.something

问题是试图引入分页。我试过will_paginate(3.0.3):

 - Syslog.paginate(:page => params[:page], :per_page => 10).find_each(:conditions => {  }, :batch_size => 2000 ) do |s|

有没有办法对像这样的大量记录进行分页?

2 个答案:

答案 0 :(得分:1)

尝试使用on paginate上的位置触发查询,如下所示

Syslog.paginate(:page => params[:page], :per_page =>10).where(conditions: "your condition")

这应该有效:)

答案 1 :(得分:0)

使用will_paginate 3.0.3,我发现实际的解决方案是:

Model.accessible_by(current_ability).page(params[:page]).order('id DESC')  

在will_paginate wiki上找到了。

使用它,我不需要find_each或批量大小,并且可以快速加载数十万条记录。

感谢@prem的初步帮助。还有一个用于协助。