I know there as been some attempts to add this functionality like in http://dev.rubyonrails.org/ticket/3950. I try to solve this problem with this patch.
If no order is given:
User.find(:last)
The primary_key will be reverted in the query using DESC.
And if any order option is given, i use regexps to change any ASC to DESC and vice versa. And in case no specific order is given to a column_name DESC is added, because the default would be ASC ("payments.amount, payments.date DESC" would be "payments.amount DESC, payments.date ASC"). This way, the SQL query will have a limit one, so instead doing a heavy query, then instantiating all the objects, and then using only the last one, you will only query for the last element.
After reversing the order i just call find_initial like find(:first) does, i think is a DRY-way to do it.
Documentation and tests included.