【发布时间】:2009-05-16 03:07:46
【问题描述】:
我正在 Rails 中开发一个应用程序,我想在其中根据用户当前的点数对用户列表进行排名。该表如下所示:user_id:string, points:integer。 由于我不知道如何做到这一点“Rails 方式”,我编写了以下 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']
事情是这样的:访问别名列“user_rank”的唯一方法是执行ranking[0].user_rank,如果我想轻松显示结果表,这让我很头疼。
还有更好的选择吗?
【问题讨论】:
标签: ruby-on-rails activerecord