опитайте това:
Character.find_by_sql("SELECT *, rank() OVER (ORDER BY points DESC) FROM characters")
трябва да ви върне символни обекти с атрибут за ранг, както е документирано тук . Това обаче може да не е агностик на базата данни и има тенденция да се обърква, ако предавате обектите.
друго (скъпо) решение е да добавите колона за ранг към вашата таблица и обратното извикване да преизчисли ранга на всички записи с помощта на .order всеки път, когато даден запис бъде запазен или унищожен.
редактиране:
друга идея, подходяща за заявки с един запис, може да се види тук