【问题标题】:Range of IDs via ActiveRecord通过 ActiveRecord 的 ID 范围
【发布时间】:2013-09-26 21:16:50
【问题描述】:

我知道我可以使用 People.first(100) 检索前 100 条记录,People.last(100) 也是如此。

我不知道,当总数为 1000 条记录时,我如何检索 200-400 范围内的所有对象

【问题讨论】:

    标签: ruby-on-rails arrays activerecord


    【解决方案1】:

    您需要的是limitoffset - 阅读this 了解更多信息。

    例子:

    People.limit(200).offset(200)
    

    上面的代码从第 201 条记录开始获取 200 条记录 - 这意味着它将是 201-400 条记录。

    【讨论】:

    • 请记住,这不会返回某个范围内的值,它将返回从第 201 条记录开始的 200 条记录。假设您删除了 50 条 id 介于 200 和 400 之间的记录,您将获得 200 条记录,但您的记录的 id 可能介于 200 和 450 之间。这有意义吗?因此,limit-offset 方法可确保您获得 200 条记录,但如果您正在寻找一系列 id(或其他字段),您将使用 where 方法。
    【解决方案2】:

    您是否在搜索特定字段,您的标题表明您正在搜索 id?

    People.where('id BETWEEN ? AND ?', 200, 400)
    

    或者...

    People.where(id: 200..400)
    

    如果您不是在特定字段上进行搜索,则可能需要使用 Big_Bird 的限制和偏移方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      相关资源
      最近更新 更多