Aユーザーhas_many Solutions関連付けられたモデル(Rails)の最大数を取得するにはどうすればよいですか?
ほとんどのソリューションを持つユーザーをユーザーに注文するにはどうすればよいですか?
私はトップ10のユーザーを見つけようとしていますが、これを行うための最もきれいで効率的な方法がわかりません。
計算コストがあまり高くない例はありますか?
Aユーザーhas_many Solutions関連付けられたモデル(Rails)の最大数を取得するにはどうすればよいですか?
ほとんどのソリューションを持つユーザーをユーザーに注文するにはどうすればよいですか?
私はトップ10のユーザーを見つけようとしていますが、これを行うための最もきれいで効率的な方法がわかりません。
計算コストがあまり高くない例はありますか?
あなたが本当にそれを行うための高速な方法をしたい場合は、ユーザーのソリューション(あなたUser
でsolutions_count
列を持っている)と、その列で順番にcounter_cache
を置きます。レールはあなたのためにそれをするので、あなたはそのカウンタを管理する必要はありません。あなたはその後、最良の方法は、それによってsolutions_countと秩序をcounter_cacheすることで、次のモデルに
class User
has_many :solutions
end
class Solution
belongs_to :user
end
を想定しRails Guides
User
.joins(:solutions)
.select("users.*, count(solutions.id) as scount")
.group("users.id")
.order("scount DESC")
でcounter_cache
についての詳細を読むことができます。 more on counter_cache
クエリは、
User.order("users.solutions_count DESC").limit(10)
インデックスにsolutions_count列を忘れてはいけないだろう。