coba ini:
Character.find_by_sql("SELECT *, rank() OVER (ORDER BY points DESC) FROM characters")
itu akan mengembalikan Anda objek Karakter dengan atribut peringkat, seperti yang didokumentasikan di sini . Namun, ini mungkin bukan database-agnostik dan cenderung berantakan jika Anda melewati objek.
solusi lain (mahal) adalah menambahkan kolom peringkat ke tabel Anda, dan meminta panggilan balik untuk menghitung ulang peringkat semua catatan menggunakan .order setiap kali catatan disimpan atau dimusnahkan.
edit :
ide lain yang cocok untuk kueri rekaman tunggal dapat dilihat di sini