hãy thử cái này:
Character.find_by_sql("SELECT *, rank() OVER (ORDER BY points DESC) FROM characters")
nó sẽ trả về cho bạn các đối tượng Character có thuộc tính xếp hạng, như được ghi lại tại đây . Tuy nhiên, điều này có thể không phải là bất khả tri cơ sở dữ liệu và có xu hướng lộn xộn nếu bạn di chuyển xung quanh các đối tượng.
một giải pháp khác (đắt tiền) là thêm cột xếp hạng vào bảng của bạn và có một lệnh gọi lại tính toán lại xếp hạng của tất cả các bản ghi bằng cách sử dụng .order bất cứ khi nào bản ghi được lưu hoặc hủy.
chỉnh sửa:
bạn có thể xem một ý tưởng khác phù hợp cho các truy vấn một bản ghi tại đây