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"的相同顺序返回记录.
谢谢.
试试这个,虽然它可能只适用于MySQL:
Inventory.where("id IN (#{item_list})").order("find_in_set(id, '#{item_list}')")
Run Code Online (Sandbox Code Playgroud)
对于较小的数据集,您可以让Ruby对结果进行排序,但我认为让数据库为您完成工作最适合较大的集合.