0

按优点宝石生成的点数对用户列表进行排序的最佳方法是什么?我很难这样做,因为优点可能不会将它的数据保存在数据库中。

到目前为止,我在用户表中缓存优点点,我只是想知道是否有更好的方法。

4

4 回答 4

3

在您的用户模型中,您可以定义默认范围:

        scope :ordered, ->{ joins('LEFT JOIN merit_scores ON ' \
                                   merit_scores.sash_id = "users".sash_id ' \
                                  'LEFT JOIN merit_score_points ON merit_score_points.score_id = merit_scores.id')
                           .group('"users".id')
                           .order('COALESCE(SUM(num_points), 0) DESC') }
于 2015-03-12T16:17:53.307 回答
0

我找到的最接近的解决方案是https://github.com/tute/merit/wiki/How-to-show-a-points-leaderboard

于 2014-03-13T06:18:01.547 回答
0

这将排除没有积分的用户

User.joins('RIGHT JOIN merit_scores ON merit_scores.sash_id = users.sash_id RIGHT JOIN merit_score_points ON merit_score_points.score_id = merit_scores.id')
    .group('users.id', 'merit_scores.sash_id')
    .order('SUM(num_points) DESC').limit(10)
于 2015-08-30T19:38:39.287 回答
-1

首先,您被某人否决了,因为您的问题非常模棱两可。SO 适用于特定于编程的问题(您需要包含代码)


命令

就答案而言,将是使用.orderActiveRecord 功能:

User.merits.order(:vote)

由于您没有提供太多代码,因此我尝试提供的任何进一步帮助都只是猜测-对任何人都没有帮助。也许您可以使用更多详细信息更新您的答案?

于 2014-03-12T09:37:16.237 回答