Bạn có thể lấy cơ sở dữ liệu để thực hiện việc sắp xếp và tránh nhiều index cuộc gọi, bạn chỉ cần nhớ rằng một LỆNH THEO SQL sắp xếp theo một biểu thức , không phải là cột :
whens = item_ids.collect.with_index { |id, i| "when #{id} then #{i}" }.join(' ')
items = Item.where(:id => item_ids).order("case id #{whens} end")