2012-03-16 14 views

risposta

4

Se si vuole veramente un modo veloce di farlo, mettere un counter_cache sulle soluzioni di utilizzatori (una colonna solutions_count nel vostro User) e l'ordine a tale colonna. Non è necessario gestire quel contatore, perché i binari lo fanno per te. Si può leggere di più su counter_cache nel Rails Guides

18
User 
    .joins(:solutions) 
    .select("users.*, count(solutions.id) as scount") 
    .group("users.id") 
    .order("scount DESC") 
4

Assumendo i seguenti modelli

class User 
    has_many :solutions 
end 

class Solution 
belongs_to :user 
end 

Quindi il modo migliore è quello di counter_cache il solutions_count e l'ordine da essa. more on counter_cache

La query sarà quindi

User.order("users.solutions_count DESC").limit(10) 

Non dimenticare di indice di colonna solutions_count.

Problemi correlati