我有一个产品控制器,其中索引操作产品使用此代码按“成本”列进行排序:
@products = Product.order(:cost)
我想保留此行为,但也要对具有相同EAN的产品进行分组。
这是实际行为:
这是预期的行为:
编辑:
工作解决方案感谢@ RocKhalil的回答:
products = Product.order(:cost)
products_hash = Hash.new
products.each_with_index do |product, i|
unless product.ean.present?
products_hash["index#{i}"] = product
else
products_hash[product.ean] = [] unless products_hash[product.ean]
products_hash[product.ean] << product
end
end
@products = products_hash.values.flatten
答案 0 :(得分:2)
你不应该group
他们,你应该以正确的方式对它们进行简单的命令:
@products = Product.order(:ean, :cost)
EDIT
products = Product.order(:cost)
products_hash = Hash.new
products.each do |product|
products_hash[product.ean] = [] unless products_hash[product.ean]
products_hash[product.ean] << product
end
products_hash.map{|k,v| puts v }