首页 > 解决方案 > Ruby ActiveRecord 获取到最后一个条目的范围?

问题描述

假设我的数据库中有 100 个条目,我的移动应用程序有一个无限列表视图,用于查询数据库中的条目。

应用程序以 15 个为一组显示项目,一旦用户到达 15 个项目的末尾,应用程序将查询接下来的 15 个项目。这意味着将有 10 个项目的剩余部分构成总共 100 个项目。

我尝试查看一些 ActiveRecord 的方法,例如find

# Find the clients with primary keys 1 and 10.
clients = Client.find([var, var+14]) # var integer is provided by GET request.
# => [#<Client id: 1, first_name: "Lifo">, #<Client id: 10, first_name: "Ryan">]

然而,值得注意的是The find method will raise an ActiveRecord::RecordNotFound exception unless a matching record is found for all of the supplied primary keys.

那么我将如何获取最后 10 个项目以显示在屏幕上?另外,当范围内没有项目时,是否可以让 ActiveRecord 返回一个值,以便我可以显示一条all items shown消息?

标签: rubyactiverecord

解决方案


Client.offset(15 * iteration).first(15)

是我在这里推荐的。那么前 15 个迭代应该是 0,第二次刷新列表时应该是 1。当然,您可以调整计算偏移量的方式。

您可能想指定一个order,以保持一致。


推荐阅读