我有一个搜索功能,它基本上运行模型记录的有序列表。问题是每当我打电话.search.limit(5)
时,结果的顺序与我打电话时的顺序不同.search
这是我的一些方法
def self.search(server_name, pvp_type)
if server_name.nil?
result = Rom::Leaderboard.order('pvp_vs desc, win_percent desc').limit(200)
end
end
当我打电话
Rom::Leaderboard.search(nil, 2).pluck(:actor_name)
SQL翻译:
SELECT "rom_leaderboards"."actor_name" FROM "rom_leaderboards" WHERE "rom_leaderboards"."pvp_type" = 2 ORDER BY pvp_vs desc, win_percent desc LIMIT 200
我得到以下结果:
[Zarglon, Lirav, adf, sdfa, Nonad, ...]
Zarglon 和 Lirav 具有相同的pvp_vs
&win_percent
属性值;afd、sdfa 和 Nonad 也有同样的关系。
现在当我打电话
Rom::Leaderboard.search(nil, 2).limit(5).pluck(:actor_name)
SQL翻译:
SELECT "rom_leaderboards"."actor_name" FROM "rom_leaderboards" WHERE "rom_leaderboards"."pvp_type" = 2 ORDER BY pvp_vs desc, win_percent desc LIMIT 5
我得到以下结果:
[Lirav, Zarglon, sfda, Nonad, adf]
这些查询都是正确的(因为搜索返回一个基于的有序列表pvp_vs & win_percent
并且两个列表都正确排序)。但我希望它们是一样的。由于某种原因,限制改变了这个顺序。有没有办法让它们保持不变?