跨多列分组时产生的Rails格式



我正在尝试在我的车辆API中添加对多个组的支持。目前我们只支持按单个列进行分组。

Vehicle.group(:fuel_type).count

结果如下:

{
"Petrol": 78,
"Diesel": 22
}

当我像这样添加多个组时:

Vehicle.group(:fuel_type, :registration_status).count

我得到以下结果,这在API响应中不那么漂亮。此外,由于计数为0,因此它缺少汽油和出口组合。

{
"['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。

我实际上张贴了我的问题到openAI的ChatGPT,并得到了一个工作的实现。下面是一个代码片段,以防有人遇到类似的问题:

def handle_hash(query)
return query unless query.is_a?(Hash)
result = {}
query.each do |key, value|
if key.is_a?(String)
result[key] = value
else
current = result
key[0...-1].each do |element|
current[element] ||= {}
current = current[element]
end
current[key[-1]] = value
end
end
result
end

最新更新