可以ActiveRecord:偏移“环绕”,以便返回所有记录吗?

时间:2011-09-18 21:43:13

标签: sql ruby-on-rails activerecord

我的查找使用:offset选项(例如,:offset => 50),并使用此查找的页面进行分页。因此,第1页从ID为51的记录开始。

问题是前50条记录永远不会出现,因为查找不会“环绕”。也就是说,如果总共有200条记录,并且我:offset => 50,则查找中的集合不包括记录1-50。是否有任何方法可以指示查找“环绕”,以便它包含所有200条记录 - 但是它们是按顺序排列的,它们是从记录#51开始的?

1 个答案:

答案 0 :(得分:0)

偏移仅用于限制选择哪些记录;所以如果你想要一切,你不应该使用它。如果您的页面大小为50,并且您可以假设您的记录总是完全按顺序排列(可能不是一个好的长期假设),您可以指定如下订单:

Model.order('id < 50, id')

如果您正在同时加载这些记录,如果数据集仍然可管理,则在内存中旋转记录可能没问题:

Model.all.rotate(50)