从ActiveRecord对象创建嵌套哈希

时间:2014-11-11 13:51:41

标签: ruby activerecord

是否可以从一组对象中获取嵌套哈希?我希望按日期和小时嵌套对象

基本上我想做点什么:

Notification.all.group_by{ |notification| notification.created_at.to_date }.group_by{ |notification| notification.created_at.time.hour }

这一切都可能吗?我想最终得到像

这样的结构
{date: {time: [objects], time: [objects]}, date: {time: [objects], time: [objects]} }

我想这样做来渲染一个表,比较按日期/时间分组的多个数据集(欢迎其他建议实现这一点)我试图达到类似于d3.nest()的效果

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

result = Notification.all.group_by { |item|
  item.created_at.to_date
}.map { |date, notifications|
  [date, notifications.group_by { |item| item.created_at.to_time.hour }]
}

这将返回一个哈希数组,但是如果您使用的是Ruby 2.x,则可以将其转换为使用Hash[result]的哈希哈希值,或者使用result.to_h哈希值。