2013-11-27 58 views
0

我试图在一页上打印2条记录。我有大约513个数据库记录。我知道在红宝石,你可以使用像range.step(2).each do ...,是否有可能与轨道和活动的记录集合呢?Rails一次访问2条记录

,如:

Users.step(2).each_with_index ... 

    do something with User(i) 
    do something with User (i+1) 
    blah blah 
... 
. 

end 
+0

你试过了吗? – sevenseacat

+0

未定义的方法'步骤'为#

回答

2

ActiveRecord关系可以被视为阵列,所以他们也已经实现Enumerable#each_slice方法:

User.all.each_slice(2) do |user1, user2| 
    # code goes here 
end 
+0

谢谢!!这正是我所寻找的 –

1

什么User.find_each(batch_size: 2)
SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 2
#<User:0x007fa92ec82f60>
#<User:0x007fa92ec82b78>
SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 2
#<User:0x007fa92ec82f60>
#<User:0x007fa92ec82b78>
.........
Rails的find_each 他禾将所有记录分成两部分。

+0

谢谢队友,我想到批处理,但它通常用于超过1000条记录,所以我不知道是否是最佳做法 –

+0

500条目的规范,但如果它记录10000服务器的谎言。 –