ruby-on-rails – 什么是获得第n个记录的最佳方式?
发布时间:2020-12-17 03:29:03 所属栏目:百科 来源:网络整理
导读:我在这里看到: How to get last N records with activerecord?,得到最后5条记录的最好方法是SomeModel.last(5). 获得第5个最后一个记录的最佳方式只有SomeModel.last(5).first还是其他的东西? 提前致谢! 解决方法 您正在寻找的是LIMIT,OFFSET的组合,并确
我在这里看到:
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,updated_at: "2014-03-24 21:52:46"> 不同之处在于,在前一个查询中,PostgreSQL会在内存中处理.reverse_order.limit.offset查询,并在返回结果之前适当地限制它们.在后者中,PostgreSQL将返回5个结果,并使用#first限制Ruby中的值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |