Mat*_*iby 3 ruby group-by ruby-on-rails ruby-on-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,'0.0',9(18)>, processing: false>, #<Sale id: 886166, , contact_id: 7775,
recent_sales.count
=> 32
Run Code Online (Sandbox Code Playgroud)
我知道我能做到这一点
grouped_sales = recent_sales.group_by(&:contact_id).map {|k,v| [k, v.length]}
=> [[9988, 10], [7775, 22]]
Run Code Online (Sandbox Code Playgroud)
但我真正需要的不仅仅是对contact_id进行分组,还要对event_id进行分组,因此最终结果如下所示
=> [[9988, 988, 5], [9988, 977, 5], [7775, 988, 2], [7775, 977, 20]]
Run Code Online (Sandbox Code Playgroud)
所以我有event_id,分组正确地将它们分开......任何关于如何做到这一点的想法
我试过了
recent_sales.group('contact_id, event_id').map {|k,v| [k, k.event, v.length]}
Run Code Online (Sandbox Code Playgroud)
但没有去
Mik*_*iet 11
grouped_sales = recent_sales.group_by { |s| [s.contact_id, s.event_id] }
.map { |k,v| [k.first, k.last, v.length] }
Run Code Online (Sandbox Code Playgroud)
简单地说,试试
group(['contact_id','event_id'])
Run Code Online (Sandbox Code Playgroud)
它对我有用.所以,我发布了答案来帮助其他人.
| 归档时间: |
|
| 查看次数: |
13290 次 |
| 最近记录: |