Vous pouvez faire en sorte que la base de données fasse le tri et éviter plusieurs index
appels, il suffit de se rappeler qu'un SQL ORDER BY ordonne par une expression , pas une colonne :
whens = item_ids.collect.with_index { |id, i| "when #{id} then #{i}" }.join(' ')
items = Item.where(:id => item_ids).order("case id #{whens} end")