I am thinking about the best solution for a problem. Let's say that we have a list of ids of ActiveRecord model:
ids = [1, 100, 5, 30, 4, 2, 88, 44]
Then I would like to make query that selects all users for example with ids from the list but to keep the order. If I do
User.where(id: ids)
the response will be a list of users with asc order by id, but I want the order to be the same as in the array.
What do you think that it's the best solution here? Select all users and then to manipulate the list of ActiveRecord objects? Maybe there is a more clever way to do that.
Thanks!
Another possibility for Postgres (9.4 or later):
Notice that the reorder is extremely important.
Solution based on https://stackoverflow.com/a/35456954
if you want to get a result of Model::ActiveRecord_Relation
Arel.sql is required to prevent the message in log:
If you are using MySQL, you can use
FIELD
to order results:If you are using Postgres you can use
intarray
you should init module first
With reference to here, for postgresql,