Zliczanie rekordów

Witam, mam następujący problem:

User ma jakąś liczbę poleconych przez siebie osób (ta sama tabela)

Mam relacje:

class User < ActiveRecord::Base has_many :referrals, :class_name => "User", :foreign_key => "ref_id"
I teraz potrzebuję pobrać z bazy powiedzmy 3 osoby z największą ilością poleconych osób, jak to łatwo osiągnąć?

Z góry dziękuje za odpowiedź

Zrobiłem takie paskudztwo, ale działa. Chętnie się dowiem jak to zapisać ładnie :slight_smile:

[code=ruby]def self.top_refs(count)
top = Array.new
self.select("ref_id, COUNT(*) as refs_count").group(“ref_id”).where(“ref_id != 0”).order(“refs_count DESC”).limit(count).each do |user|
top << self.find(user.ref_id)
end

return top

end[/code]

jeśli spodziewasz się realnego ruchu na swojej stronie, to stwórz oddzielną kolumnę z liczbą poleceń. Zapytanie jest generalnie chyba ok, ale na pierwszy rzut oka widać, że nie będzie zbyt wydajne (szczególnie przy wielu użytkownikach w bazie)