ruby-on-rails – 如何在rails 3中按两个条件进行分组并循环遍历它们

好的,我有一个销售模型

recent_sales = Sale.recent
 => [#<Sale id: 7788,contact_id: 9988,purchasing_contact_id: 876,event_id: 988,#<BigDecimal:7fdb4ac06fe8,'0.0',9(18)>,fulfilled_at: nil,skip_print: nil,convention_id: 6,refund_fee: #<BigDecimal:7fdb4ac06de0,processing: false>,#<Sale id: 886166,contact_id: 7775,recent_sales.count
=> 32

我知道我能做到这一点

grouped_sales = recent_sales.group_by(&:contact_id).map {|k,v| [k,v.length]}
=> [[9988,10],[7775,22]]

但我真正需要的不仅仅是对contact_id进行分组,还要对event_id进行分组,因此最终结果如下所示

=> [[9988,988,5],[9988,977,2],20]]

所以我有event_id,分组正确地将它们分开……任何关于如何做到这一点的想法

我试过了

recent_sales.group('contact_id,event_id').map {|k,k.event,v.length]}

但没有去

解决方法

grouped_sales = recent_sales.group_by { |s| [s.contact_id,s.event_id] }
                .map { |k,v| [k.first,k.last,v.length] }

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...