Rails根据Gem Merit的徽章数量订购用户

时间:2018-03-13 10:38:50

标签: ruby-on-rails ruby merit-gem

我根据他/她收集的徽章数量订购用户时遇到问题。我使用Gem Merit制作徽章系统。 所以,如果我想收集用户的徽章,代码将user.badges转换为sql为

Merit::Sash Load (1.6ms)  SELECT  "sashes".* FROM "sashes" WHERE "sashes"."id" = ? LIMIT ?  [["id", 5], ["LIMIT", 1]]
Merit::BadgesSash Load (1.4ms)  SELECT "badges_sashes".* FROM "badges_sashes" WHERE "badges_sashes"."sash_id" = ?  [["sash_id", 5]]
用户模型中的

我将Merit和has_merit代码作为优点文档说明,当我写users = User.where(id: user_ids).left_joins(:merit).order(is_verified: :desc).group(:id).order("count(badges.id) desc")时,它会显示错误,因为它无法识别meritbadges.id

如何根据拥有最多徽章的用户实际订购用户?谢谢你!

1 个答案:

答案 0 :(得分:0)

我从未尝试过功绩。但如果你能从用户那里得到徽章。然后以下查询将给出USER_ID ==> BADGES_COUNT按降序排列。

User.joins(:badges).group('users.id').order("count(badges.id) DESC").count