इसे आजमाएं:
Character.find_by_sql("SELECT *, rank() OVER (ORDER BY points DESC) FROM characters")
यह आपको कैरेक्टर ऑब्जेक्ट को रैंक विशेषता के साथ लौटाएगा, जैसा कि प्रलेखित है यहां ए> . हालाँकि, यह डेटाबेस-अज्ञेयवादी नहीं हो सकता है और यदि आप वस्तुओं के आसपास से गुजरते हैं तो यह गड़बड़ हो जाता है।
एक और (महंगा) समाधान है अपनी तालिका में एक रैंक कॉलम जोड़ना, और जब भी कोई रिकॉर्ड सहेजा या नष्ट किया जाता है, तो .order का उपयोग करके सभी रिकॉर्ड्स के रैंक की पुनर्गणना करने के लिए कॉलबैक प्राप्त करें।
संपादित करें:
एकल-रिकॉर्ड प्रश्नों के लिए उपयुक्त एक और विचार देखा जा सकता है यहां