ActiveRecord "first" vs "last"


According to, “first” does not use “ORDER BY ID” to bring the first record. Whereas “last” does.

I find this inconsistent. I can also say that this is buggy on MySQL. “…limit 1” does not always bring the record with the minimum id. I can link you to the following that

verifies my statement:,530328,530328#msg-530328

Do you think that you can change “first” to be consistent with “last” (that does the order by id desc)?



It is already done at master branch.

This is already fixed on Rails 4.0

Just a thought,

how does this work with legacy tables that have no PK? What makes them possible now is that you can filter down with ‘where’ onto a single record and get .first out without triggering a fetch through ID. Perhaps implement an “any” finder method with same function as the old “first” ?


Yep, in Rails 4 the new #take method is the old #first:


Thanks Xavier :slight_smile: