Rails索引顺序和组

时间:2017-02-25 10:16:59

标签: ruby-on-rails sorting ruby-on-rails-4 grouping

我有一个产品控制器,其中索引操作产品使用此代码按“成本”列进行排序:

  

@products = Product.order(:cost)

我想保留此行为,但也要对具有相同EAN的产品进行分组。

这是实际行为:

  1. EAN:777777,费用:5
  2. EAN:444444,费用:10
  3. EAN:222222,费用:15
  4. EAN:333333,费用:20
  5. EAN:444444,费用:25
  6. 这是预期的行为:

    1. EAN:777777,费用:5
    2. EAN:444444,费用:10
    3. EAN:444444,费用:25
    4. EAN:222222,费用:15
    5. EAN:333333,费用:20
    6. 编辑:

      工作解决方案感谢@ 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
      

1 个答案:

答案 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 }
相关问题