特定の条件を満たすコードを
書き方分からなかったのでメモ。joinも行っていたのでややこしかった。
Foge.joins(:foo_bar).group('foo_bar.name')
.order('count_foo_bars_name desc')
.limit(10)
.count('foo_bar.name')
記述の順番が直感的ではないので注意。count_foo_bars_nameの部分は一度ActiveRecordが吐き出してるSQL文を見て COUNT(*) AS <この部分> を抜き出してくると良い。
結果作られるSQL文はこんな感じ
SELECT COUNT(foo_bar.name) AS count_foo_bars_name,
foo_bars.name AS foo_bars_name
FROM "Foges"
INNER JOIN "foo_bars" ON "foo_bars"."id" = "foges"."foo_bar_id"
GROUP BY foo_bars.name
ORDER BY count_foo_bars_name desc
LIMIT 10;