Forum: Ruby on Rails Calling find on AR class, order by association count?

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
690c9bf8eeb80dd65c69609ed81da73c?d=identicon&s=25 unknown (Guest)
on 2006-06-07 12:07
(Received via mailing list)
I suspect that this is going to wind up trivial and I'm going to slap
myself in the head...

Suppose I have User and Comment AR classes.

User has_many :comments, Comment belongs_to :user

I want to do a User.find, which returns User objects in order of which
user has the most comments.  I suspect that this involves renaming the
COUNT(*) results of a sub-select so that I can order by them.

Answers, links to answers?

655b8c68c3e861893dfabed725dd3a05?d=identicon&s=25 Rodney Ramdas (rodney)
on 2006-06-07 14:56
(Received via mailing list)
hi Matt,

have a look at ActiveRecord#calculations in the api
basically something like this:

topspammers = Comment.count(:all, :group => 'user_id' , :order =>
'count_all desc')

gives you a nice OrderedHash  with the user_id as key and the number
of comments belonging to that user as the value


On 6/6/06,
<> wrote:
> Answers, links to answers?
> -Matt
> _______________________________________________
> Rails mailing list

This topic is locked and can not be replied to.