所以我有一个我想在rails中复制的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;
我一直在阅读rails的Active Record Query Interface网站,但似乎无法把它放在一起。我希望查询返回Gamebox记录的集合,按游戏盒的“收藏夹”数量排序。在rails中最干净的方法是什么?
答案 0 :(得分:0)
我相信这会起作用(在本地使用类似结构的数据库),虽然我不确定我在适当的位置有适当的模型,但是你可能需要移动一个周围的事情:
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")