我想创建一个活动记录查询,并将结果存储在一个散列中,该散列包括来自关联表的摘要信息,如下所示。
这是表和关联:
Post belongs_to: category
Category has_many: posts
在这里,我想计算每个类别中的帖子数量,并按如下方式创建摘要表(使用所需表的SQL查询):
select c.name, count(p.id) from posts a left join categories c on p.category_id = c.id where p.status = 'Approved' group by (c.name) order by (c.name);
Category | count
---------------+-------
Basketball | 2
Football | 3
Hockey | 4
(3 rows)
最后,我想将结果存储在哈希中,如下所示:
summary_hash = { 'Basketball' => 2, 'Football' => 3, 'Hockey' => 4 }
如果您能指导我如何编写活动记录查询并将结果存储在哈希中,我将不胜感激。
答案 0 :(得分:1)
尝试
Post.where(status: 'Approved').joins(:category).
select("categories.name").group("categories.name").count