prova detta:
Character.find_by_sql("SELECT *, rank() OVER (ORDER BY points DESC) FROM characters")
det bör returnera dina karaktärsobjekt med ett rank-attribut, som dokumenterats här a> . Detta kanske inte är databasagnostiskt och tenderar att bli rörigt om du passerar runt objekten.
en annan (dyr) lösning är att lägga till en rangkolumn i din tabell och låta en callback räkna om alla posters rangordning med .order närhelst en post sparas eller förstörs.
redigera:
en annan idé som lämpar sig för frågor med en enda post kan ses här