Ruby on Rails:查找没有排序的记录

saf*_*lmj 6 ruby sorting ruby-on-rails find

我需要按照传入的确切顺序查找记录作为搜索参数.

例如,我有一个字符串:

item_list = "23,12,54,45"
Run Code Online (Sandbox Code Playgroud)

通过以下查询,我以"item_list" - "12,23,45,54"的asc顺序获取记录.

Inventory.find(item_list.split(","))
Run Code Online (Sandbox Code Playgroud)

如何修改上述查询,使其以"item_list"的相同顺序返回记录.

谢谢.

Dex*_*Dex 5

试试这个,虽然它可能只适用于MySQL:

Inventory.where("id IN (#{item_list})").order("find_in_set(id, '#{item_list}')")
Run Code Online (Sandbox Code Playgroud)

对于较小的数据集,您可以让Ruby对结果进行排序,但我认为让数据库为您完成工作最适合较大的集合.