Anta att du försöker ordna denna array-of-array efter det första elementet:
[
[ 1, 1 ],
[ 1, 2 ],
[ 1, 3 ]
]
Båda dessa (och flera andra) är giltiga resultat eftersom du har dubbla sorteringsnycklar:
[ [1,1], [1,2], [1,3] ]
[ [1,3], [1,1], [1,2] ]
Du stöter på samma problem i databasen. Du säger att:
Så dessa fem värden kan visas i vilken ordning som helst och fortfarande uppfylla ditt angivna ORDER BY-villkor. De behöver inte ens komma ut från databasen i samma ordning i två körningar av samma fråga.
Om du vill ha konsekvent ordning måste du se till att varje rad i din resultatuppsättning har en unik sorteringsnyckel så att banden bryts konsekvent. Detta är ActiveRecord så du har ett unikt id
tillgängligt så att du kan använda det för att bryta dina beställningsband:
result = Rom::Leaderboard.order('pvp_vs desc, win_percent desc, id').limit(200)
# --------------------------------------------------------------^^
Det ger dig en väldefinierad och unik beställning.