gpt4 book ai didi

ruby-on-rails - 获得倒数第 n 条记录的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 16:04:44 24 4
gpt4 key购买 nike

我在这里看到:How to get last N records with activerecord?获得最后 5 条记录的最佳方法是 SomeModel.last(5)。
获得第 5 个最后记录的最佳方法是 SomeModel.last(5).first 还是其他?

提前致谢!

最佳答案

您要找的是LIMIT的组合, OFFSET ,并确保查询使用 ORDER BY作为约束。这在 PostgreSQL 上有描述 - Queries: Limit and Offset documentation page .

一个例子是:

irb> SomeModel.count
=> 35

irb> SomeModel.order(:id).reverse_order.limit(1).offset(4)
# SomeModel Load (0.7ms) SELECT "some_models".* FROM "some_models" ORDER BY "some_models".id DESC LIMIT 1 OFFSET 4
=> #<ActiveRecord::Relation [#<SomeModel id: 31, name: "hello world", created_at: "2014-03-24 21:52:46", updated_at: "2014-03-24 21:52:46">]>

产生与以下相同的结果(尽管是 AR::Relation):
irb> SomeModels.last(5).first
# SELECT "some_models".* FROM "some_models" ORDER BY "some_models"."id" DESC LIMIT 5
=> #<SomeModel id: 31, name: "hello world", created_at: "2014-03-24 21:52:46", updated_at: "2014-03-24 21:52:46">

不同的是,在前面的查询中,PostgreSQL 会处理 .reverse_order.limit.offset在内存中查询,并在返回结果之前适本地限制值。在后者中,PostgreSQL 将返回 5 个结果,您可以使用 #first 限制 Ruby 中的值。 .

关于ruby-on-rails - 获得倒数第 n 条记录的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22620929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com