Předpokládejme, že se pokusíte seřadit toto pole polí podle prvního prvku:
[
[ 1, 1 ],
[ 1, 2 ],
[ 1, 3 ]
]
Oba tyto (a několik dalších) jsou platné výsledky, protože máte duplicitní klíče řazení:
[ [1,1], [1,2], [1,3] ]
[ [1,3], [1,1], [1,2] ]
V databázi narazíte na stejný problém. Říkáte, že:
Těchto pět hodnot se tedy může objevit v libovolném pořadí a stále splňovat vámi zadanou podmínku ORDER BY. Nemusí ani vycházet z databáze ve stejném pořadí při dvou provedeních stejného dotazu.
Chcete-li konzistentní řazení, musíte zajistit, aby každý řádek ve vaší sadě výsledků měl jedinečný klíč řazení, aby se vazby přerušovaly konzistentně. Toto je ActiveRecord, takže budete mít jedinečné id
k dispozici, takže to můžete použít k přerušení vazeb na objednávky:
result = Rom::Leaderboard.order('pvp_vs desc, win_percent desc, id').limit(200)
# --------------------------------------------------------------^^
To vám poskytne dobře definované a jedinečné uspořádání.