How to get last N records with activerecord? How to get last N records with activerecord? ruby ruby

How to get last N records with activerecord?


This is the Rails 3 way

SomeModel.last(5) # last 5 records in ascending orderSomeModel.last(5).reverse # last 5 records in descending order


Updated Answer (2020)

You can get last N records simply by using last method:

Record.last(N)

Example:

User.last(5)

Returns 5 users in descending order by their id.

Deprecated (Old Answer)

An active record query like this I think would get you what you want ('Something' is the model name):

Something.find(:all, :order => "id desc", :limit => 5).reverse

edit: As noted in the comments, another way:

result = Something.find(:all, :order => "id desc", :limit => 5)while !result.empty?        puts result.popend


new way to do it in rails 3.1 is SomeModel.limit(5).order('id desc')