Я считаю, что это будет работать (работает с аналогично структурированной базой данных локально), хотя я не уверен, что у меня есть подходящие модели в подходящих местах для того, что вы пытаетесь сделать, поэтому вам, возможно, придется переместить кул вещи вокруг:
Gamebox.joins(:gamebox_favorites).
group('"gamebox_favorites"."gamebox_id"').
order('count("gamebox_favorites"."gamebox_id")')
На консоли это должно скомпилироваться в (в случае PostgreSQL на серверной части):
SELECT "gameboxes".* FROM "gamebox_favorites"
INNER JOIN "gamebox_favorites"
ON "gamebox_favorites"."gamebox_id" = "gamebox"."id"
GROUP BY "gamebox_favorites"."gamebox_id"
ORDER BY count("gamebox_favorites"."gamebox_id")
... и я предполагаю, что вы не хотите просто обернуть это в find_by_sql
вызов, такой как:
Gamebox.find_by_sql("select g.* from gamebox_favorites f
inner join gameboxes g
on f.gamebox_id = g.id
group by f.gamebox_id
order by count(f.gamebox_id) desc")