Je développe dans Rails une application dans laquelle je souhaite classer une liste d'utilisateurs en fonction de leurs points actuels. La table ressemble à ceci: user_id: string, points: integer. Puisque je ne peux pas comprendre comment faire « The Rails Way », j'ai écrit le code SQL suivant:Instructions ActiveRecord et SELECT AS SQL
self.find_by_sql ['SELECT t1.user_id, t1.points, COUNT(t2.points) as user_rank FROM registrations as t1, registrations as t2 WHERE t1.points <= t2.points OR (t1.points = t2.points AND t1.user_id = t2.user_id) GROUP BY t1.user_id, t1.points ORDER BY t1.points DESC, t1.user_id DESC']
La chose est la suivante: la seule façon d'accéder à la colonne crénelage « user_rank » est en faisant le classement [0] .user_rank, qui me brouille beaucoup de maux de tête si je voulais afficher facilement la table résultante.
Existe-t-il une meilleure option?