如何获得最高数量的关联模型(Rails)?

ama*_*euk 9 activerecord ruby-on-rails has-many

用户has_many解决方案

如何为拥有最多解决方案的用户订购用户?

我正在努力寻找十大用户,但我不确定如何做到最干净或最有效的方法呢?

有没有人有一个计算成本太高的例子?

gay*_*vat 22

User
  .joins(:solutions)
  .select("users.*, count(solutions.id) as scount")
  .group("users.id")
  .order("scount DESC")
Run Code Online (Sandbox Code Playgroud)


And*_*i S 5

如果您真的想要一种快速的方法,那么请counter_cache使用用户的解决方案(solutions_count在您的列中有一个列User)并按该列排序.您不需要管理该计数器,因为rails会为您执行此操作.您可以counter_cacheRails指南中阅读更多相关信息


egz*_*gze 5

假设以下模型

class User
  has_many :solutions
end

class Solution
 belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

那么最好的方法是 counter_cache thesolutions_count 并按它排序。更多关于 counter_cache

然后查询将是

User.order("users.solutions_count DESC").limit(10)
Run Code Online (Sandbox Code Playgroud)

不要忘记索引solutions_count 列。