如何迭代每个product_category_id并返回属于product_category_id的modifier_id数组?
这是我的数据库布局:
id product_category_id modifier_id time_stamp
1 7 5 NULL
2 7 4 NULL
3 7 54 NULL
4 7 55 NULL
5 8 6 NULL
6 93 7 NULL
7 48 5 NULL
8 48 4 NULL
9 48 55 NULL
10 48 54 NULL
11 11 2 NULL
12 11 1 NULL
13 11 10 NULL
14 11 44 NULL
https://gist.github.com/ggeorgiev1/aaed6de2643c16bef0a7
所以结果应该与此类似: {:product_category_id => 7,:modifier_id => [5,4,54,55]}
谢谢
答案 0 :(得分:1)
如果您对
等格式没问题{ 7: [5, 4, 54, 55] }
你可以这样做:
result = Hash.new {|k, v| k[v] = [] }
ProductCategoryDefaultModifiers.all.each do |it|
result[it.product_category_id] << it.modifier_id
end
puts result
答案 1 :(得分:1)
您可以使用#group_by
执行此操作ProductCategoryDefaultModifiers.all.group_by do |record|
{:product_category_id => record.product_category_id}
end
#=> {:product_category_id=>7} => [#<ProductCategoryDefaultModifier id: 1, modifier_id: 5>, ...]
请记住,对于大数据集来说,最好使用数据库group
答案 2 :(得分:0)
只需拥有产品类别= 7的修饰符数组
modifiers = ProductCategoryDefaultModifier.select(:modifier_id).where(product_category_id: 7).pluck(:modifier_id)
或者你可以将它们全部放在一个hash中,其中key是product_category_id
ProductCategoryDefaultModifier.all.group_by{|pcdm| pcdm.product_category_id}