Rails:对模型记录进行分组,然后操纵值

时间:2014-12-16 15:51:11

标签: ruby ruby-on-rails-4

我按照属性对模型实例进行分组,然后操纵哈希值。

Product.create(id: 1, name: "alpha", value: "apple")
Product.create(id: 2, name: "beta", value: "bongo")
...

我们想要表单:[["alpha"],[["apple"],[1]]],[[beta],[["bongo"],[2]]]...]

array = []
array1 = []
Product.all.group_by(&:name).each do |a|
  a[1].each do |b|
    array1 << [b.value,b.id]
  end
  array << [a[0],array1]
  array1 = []
end

ab是迭代器变量,array1包含第i个[1]值,array包含所需的输出结构。

这很有效,但很难看。你能干得更清楚吗?

1 个答案:

答案 0 :(得分:1)

array = Product.all.group_by(&:name).map { |name, products|
  [name, products.map { |product| [product.value, product.id] }]
}

我相信这是你想要的,但不是100%肯定。请尝试使用描述性名称,需要花费大量精力来确定array1b和类似的非标识标识符。如果你发布一个输出结构的例子也很好。