サークルとメンバーが1対多で関連づけられているデータで、
メンバー数の多い順にサークル名を取得するっていう書き方がわからなかったけど解決した。
リレーションが、
# /app/models/circle.rb
class Circle < ActiveRecord::Base
has_many :members
end
# /app/models/member.rb
class Member < ActiveRecord::Base
belongs_to :circle
end
の時に、
Circle.joins(:members)
.select('count(*) as members_count, circle.id, name')
.group('circle.id')
.order('members_count DESC')
とすれば良いようだ。
見やすくするために改行したけど、実際は
Circle.joins(:members).select('count(*) as members_count, circle.id, name').group('circle.id').order('members_count DESC')
だよ。
joinsとcircle.idが必要な点が意味不明ではまってた・・・