RAILS:如何从具有分组的关联表中选择字段,并根据结果创建哈希?

时间:2019-03-23 08:39:41

标签: ruby-on-rails activerecord

我想创建一个活动记录查询,并将结果存储在一个散列中,该散列包括来自关联表的摘要信息,如下所示。

这是表和关联:

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 }

如果您能指导我如何编写活动记录查询并将结果存储在哈希中,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

尝试

Post.where(status: 'Approved').joins(:category).
  select("categories.name").group("categories.name").count