2012-08-31 64 views
0

find_each我有一个巨大的记录集显示和使用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| 

有没有办法来分页这样的一大组记录?

+0

,应该工作。你是否收到任何错误信息?你在视图中使用了will_patginate @collection吗? – Prem

+0

= will_paginate(@collection)给我留下了错误:未定义的方法'TOTAL_PAGES' – simonmorley

+0

没有ü尝试保存查询到像@syslogs一个变量,并使用在‘will_paginate(@syslogs)’? – Prem

回答

0

使用will_paginate 3.0.3,我发现实际的解决办法是要做到这一点:

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

发现在will_paginate wiki上。

利用这一点,我不需要find_each或批量大小和拥有的在瞬间负载记录几十万。

感谢@prem他的初始帮助。另外一个帮助。

1

尝试火查询中使用,其中在PAGINATE如下

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

这应该工作:)

+0

暂时放在哪里。使用你的方法,相同的结果 - 没有错误,没有分页..非常奇怪! – simonmorley

+0

验证您的应用程序除了will_paginate克,并尝试采取colelction到一个变量,并使用该 – Prem

+0

移动find_each到控制器给我一个错误:没有给出(收益率)块。这就是为什么我暂时去看待。 WP gem在其他地方工作 – simonmorley