spróbuj tego:
Character.find_by_sql("SELECT *, rank() OVER (ORDER BY points DESC) FROM characters")
powinien zwrócić ci obiekty postaci z atrybutem rangi, jak udokumentowano tutaj . Jednak może to nie być niezależne od bazy danych i może powodować bałagan, jeśli przechodzisz obok obiektów.
innym (kosztownym) rozwiązaniem jest dodanie kolumny z rangą do tabeli i wywołanie zwrotne, które przeliczy rangę wszystkich rekordów za pomocą .order, gdy rekord zostanie zapisany lub zniszczony.
edytuj :
inny pomysł odpowiedni dla zapytań pojedynczych rekordów można zobaczyć tutaj