我要按名称对书进行排序。
Books.order(:name).find_each(batch_size: 50) do |book|
end
但这不起作用。
[1m[36mBook Load (411.7ms)[0m [1m[34mSELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT $1[0m [["LIMIT", 50]]
使用order by specific column
时有什么方法可以find_each
?
答案 0 :(得分:3)
从find_each
文档中:
无法设置顺序。即自动设置为 升序为主键(“ id ASC”)进行批量订购 工作。这也意味着该方法仅在主键 是可排序的(例如整数或字符串)。
答案 1 :(得分:2)
我想您可以添加一个分页宝石(您的Gemfile中可能已经有一个will_paginate
或kaminari
)
那会让你做...
total_batches = (Book.all.count / 50.0).ceil
(1..total_batches).each do |batch|
Book.order(:name).paginate(page: batch, per_page: 50).each do |book|
# do stuff
end
end