在查询中使用:limit
,我将获得前N条记录。获取最后N条记录的最简单方法是什么?
发布于 2012-01-27 08:37:43
这是Rails 3的方式
SomeModel.last(5) # last 5 records in ascending order
SomeModel.last(5).reverse # last 5 records in descending order
发布于 2011-12-16 05:52:30
在Rails3.1中实现这一点的新方法是SomeModel.limit(5).order('id desc')
发布于 2017-07-26 18:28:24
对于Rails 5(可能还有Rails 4)
不好:
Something.last(5)
因为:
Something.last(5).class
=> Array
所以:
Something.last(50000).count
很可能会毁了你的记忆,或者永远都不会。
好的方法:
Something.limit(5).order('id desc')
因为:
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
将其转换为数组。所以:
Something.limit(50000).order('id desc').count
..。只需要一秒钟。
https://stackoverflow.com/questions/420352
复制相似问题