我正在做一个需要做一些基本统计报告的项目。例如,模型Post
的外键字段category_id
引用了Category
模型中的一条记录,而布尔字段published
的默认值是{{1 }}(以及false
,title
,body
-但它们与此问题无关)。
我想设置和嵌套分组以遍历author
模型,并按Post
分组Post
记录,然后在每个类别中按状态划分进一步分组Category
字段,为每个分组赋予published
,以呈现类似于以下内容的结果:
count
下面是我开始使用的非功能代码:
Categories
Tutorial
Published: 14 posts
Draft: 3 posts
Q & A
Published: 14 posts
Draft: 3 posts
Letter
Published: 14 posts
Draft: 3 posts
任何有关如何修改上述代码的反馈或建议,将不胜感激。谢谢
答案 0 :(得分:0)
请尝试在下面的查询中对其进行测试,但我认为它应该可以工作
未测试
categories = Category.left_outer_joins(:posts)
.select("
Categories.label,
(SELECT COUNT(posts.id) from posts where posts.published=true) as published_count,
(SELECT COUNT(posts.id) from posts where posts.published=false) as draft_count
")
.group('categories.id')
在视图中
<% categories.each do |category| %>
<%= category.label %>
<%= category.published_count %>
<%= category.draft_count %>
<% end %>