ActiveRecord.find([id array]) question

Ryan Mohr wrote:

If you have a collection of ids, what's the best way to extract the
records from the database while maintaining the original id order?

Recently I noticed that a find statement like

% User.find([1, 2, 3])

will return the same thing as

% User.find([3, 2, 1])

...ignoring the order of the ids in the array completely. In my case, I
have an array that is twenty ids long and I need the ordering preserved.
What's the best solution without having to loop through the ids and
select each record one by one?
  
It's a SQL limitation, you can't enforce any order unless you actually
use ORDER BY (:order parameter of ActiveRecord::Base.find).

You could create a hash 'id => position' from your original id array and
use it to sort the results according to their id.

Lionel