首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用activerecord获取最后N条记录?

如何使用activerecord获取最后N条记录?
EN

Stack Overflow用户
提问于 2009-01-07 05:47:54
回答 13查看 152.9K关注 0票数 181

在查询中使用:limit,我将获得前N条记录。获取最后N条记录的最简单方法是什么?

EN

回答 13

Stack Overflow用户

发布于 2012-01-27 08:37:43

这是Rails 3的方式

代码语言:javascript
运行
AI代码解释
复制
SomeModel.last(5) # last 5 records in ascending order

SomeModel.last(5).reverse # last 5 records in descending order
票数 268
EN

Stack Overflow用户

发布于 2011-12-16 05:52:30

在Rails3.1中实现这一点的新方法是SomeModel.limit(5).order('id desc')

票数 53
EN

Stack Overflow用户

发布于 2017-07-26 18:28:24

对于Rails 5(可能还有Rails 4)

不好:

代码语言:javascript
运行
AI代码解释
复制
Something.last(5)

因为:

代码语言:javascript
运行
AI代码解释
复制
Something.last(5).class
=> Array

所以:

代码语言:javascript
运行
AI代码解释
复制
Something.last(50000).count

很可能会毁了你的记忆,或者永远都不会。

好的方法:

代码语言:javascript
运行
AI代码解释
复制
Something.limit(5).order('id desc')

因为:

代码语言:javascript
运行
AI代码解释
复制
Something.limit(5).order('id desc').class
=> Image::ActiveRecord_Relation

Something.limit(5).order('id desc').to_sql
=> "SELECT  \"somethings\".* FROM \"somethings\" ORDER BY id desc LIMIT 5"

后者是未评估的作用域。您可以将其链接,或通过.to_a将其转换为数组。所以:

代码语言:javascript
运行
AI代码解释
复制
Something.limit(50000).order('id desc').count

..。只需要一秒钟。

票数 43
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/420352

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文