我想在一个页面上打印2条记录。我有大约513个数据库记录。我知道在ruby中你可以使用类似range.step(2).each do ...
的东西,是否可以使用rails和一个活动的记录集合来做它?
像:
Users.step(2).each_with_index ...
do something with User(i)
do something with User (i+1)
blah blah
...
.
end
答案 0 :(得分:2)
ActiveRecord
关系可以视为数组,因此它们也实现了Enumerable#each_slice
方法:
User.all.each_slice(2) do |user1, user2|
# code goes here
end
答案 1 :(得分: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
他会把所有的记录分成两部分。