Stel dat u deze array-of-arrays probeert te ordenen op het eerste element:
[
[ 1, 1 ],
[ 1, 2 ],
[ 1, 3 ]
]
Beide (en verschillende andere) zijn geldige resultaten omdat je dubbele sorteersleutels hebt:
[ [1,1], [1,2], [1,3] ]
[ [1,3], [1,1], [1,2] ]
U ondervindt hetzelfde probleem in de database. Je zegt dat:
Dus die vijf waarden kunnen in elke volgorde worden weergegeven en toch voldoen aan de opgegeven ORDER BY-voorwaarde. Ze hoeven niet eens in dezelfde volgorde uit de database te komen in twee uitvoeringen van dezelfde zoekopdracht.
Als u een consistente volgorde wilt, moet u ervoor zorgen dat elke rij in uw resultatenset een unieke sorteersleutel heeft, zodat banden consequent worden verbroken. Dit is ActiveRecord, dus je hebt een unieke id
beschikbaar, zodat je die kunt gebruiken om je bestellingsbanden te verbreken:
result = Rom::Leaderboard.order('pvp_vs desc, win_percent desc, id').limit(200)
# --------------------------------------------------------------^^
Dat geeft je een goed gedefinieerde en unieke volgorde.