Rails で group by して count を取りたい時のイディオム
Rails4 で group by して count を取りたい時にこんなふうに書けます。
本に対してレビューが書かれていて、本ごとのレビュー件数を取りたい場合は
Review.group(:book_id).order('count_all desc').count
こんなふうに書くと
(0.3ms) SELECT COUNT(*) AS count_all, book_id AS book_id FROM `reviews` GROUP BY book_id ORDER BY count_all desc => {588=>5, 589=>2, 590=>1, 591=>0, 592=>4, 593=>3}
みたいな結果になります。{ book_id => count }
のハッシュが返ってきます。
そういうメモ。