假设:
提到= [ “2”, “1”, “3”]
unranked = User.where(:nickname.in =>提及).map
输出与提供的数组中的顺序不匹配
输出是随机的=> 3,1,2
我希望它按原始数组=> 2,1,3
答案 0 :(得分:1)
我有同样的问题,我这样解决了:
mentions=["foo","bar","baz"]
ranked = User.where(:nickname.in => mentions).sort do |a, b|
mentions.index(a.nickname) <=> mentions.index(b.nickname)
end
不是最优雅的解决方案,因为我在应用程序中排序而不是在数据库引擎上排序但是嘿..它可以工作(在小列表上)。