ActveRecordでGroupByでのカウント値を得る

ActveRecordでGroupByでのカウント値を得る場合,カウントメソッドを :groupオプションを含めて行う。
たとえば、

counts = Hoge.count(:group => "group_id")

のようにする。このようにすると

SELECT count(*) AS count_all, group_id AS group_id FROM `hoges`  GROUP BY group_id

のようなSQLが実行され、結果は[[<件数>,], [<件数>,].....]のような二次元配列のかたちで返される。

なので、group byに指定した各値が何件ずつあるか知りたい場合には、

Hoge.count(:group => "group_id").each do |c|
  puts "#{c[1]}#{c[0]件あるよ!}"
end

groupがいくつあるかをしるには、

counts = Hoge.count(:group => "group_id")
puts "#{counts}グループあるよ!"

とよれば、良さそうですね。