【发布时间】:2023-01-07 23:57:23
【问题描述】:
我正在尝试在我的车辆 API 中添加对多个组的支持。目前我们只支持像这样按单列分组。
Vehicle.group(:fuel_type).count
这给了我这样的结果:
{
"Petrol": 78,
"Diesel": 22
}
当我像这样添加多个组时:
Vehicle.group(:fuel_type, :registration_status).count
我得到以下结果,这在 API 响应中不是很好。此外,由于计数为 0,因此缺少 Petrol 和 Exported 的组合。
{
"['Diesel', 'Scrapped']": 5,
"['Petrol', 'Registered']": 6,
"['Petrol', 'Scrapped']": 30,
"['Diesel', 'Registered']": 1,
"['Diesel', 'Deregistered']": 11,
"['Petrol', 'Deregistered']": 42,
"['Diesel', 'Exported']": 5
}
我希望它的格式是这样的:
{
"Diesel": {
"Scrapped": 5,
"Registered": 1,
"Deregistered": 11,
"Exported": 5
},
"Petrol": {
"Scrapped": 30,
"Registered": 6,
"Deregistered": 42,
"Exported: 0
}
}
理想情况下,我想支持 n 嵌套组,其中每个组合都显示在每一层中,例如。即使没有出口汽油车,它仍应包含在计数为 0 的响应中。
【问题讨论】:
-
您在这里要做的远远超出了
ActiveRecord::Calculations所做的范围,这只是微不足道的聚合,而这不是 rails 会神奇地为您做的事情。分组将为您提供每个组的行以及该组的聚合 -#count只是勉强聪明到可以将一个简单的结果转换为散列。
标签: ruby-on-rails group-by format