在rails 2.3.8中一次解析或迭代一些记录

时间:2011-11-02 09:36:46

标签: ruby-on-rails ruby dry

我想一次将5条记录拉入视图(我使用的是rails 2.3.8)。

我正在使用will_paginate,它工作得很好但是:

我想将这些结果发送到视图,一次发送5条记录,然后添加一个div,然后循环直到它们全部显示出来。

我尝试使用find_in_batches,但我不知道如何访问它返回的对象。我可以使用#{}吗?

我知道有.first.last方法,但有.second.third.fourth等等吗?

1 个答案:

答案 0 :(得分:1)

您有find_in_batches in the documentation的示例:

Person.find_in_batches(:conditions => "age > 21", :batch_size => 5) do |group|
  sleep(50) # Make sure it doesn't get too crowded in there!
  group.each { |person| person.party_all_night! }
end

但这可能不是您正在寻找的解决方案。如果您有5000条记录,则会发出1000条数据库查询。

更好的解决方案是使用each_slice,此方法将获取一个数据库查询中的所有记录,然后拆分结果集:

Person.find(:all, :conditions => "age > 21").each_slice(5) do |group|
  group.each { |person| person.party_all_night! }
end