Ruby on rails 将项目分类到装运包中,模型与Rails 3中的“属于”关系

Ruby on rails 将项目分类到装运包中,模型与Rails 3中的“属于”关系,ruby-on-rails,ruby,sorting,Ruby On Rails,Ruby,Sorting,我正在尝试将变体排序到方框中,以计算通过USPSAPI的发货量。在需要将每个框放置到新框中之前,每个框可以包含特定数量的变化。每个变体都属于一个装运箱 这似乎是一个非常具体的问题,我相信在互联网上有一个模糊(但很好)的答案。我不知道该找什么来帮助我 变异 订货单、装箱单 更新1 packages=order.shipping\u type\u in\u order.reduce([])do\124;项目、箱子| 温度=[] 放置箱子[:装运标识] 订单。扁平包装清单。减少([])do | x

我正在尝试将变体排序到方框中,以计算通过USPSAPI的发货量。在需要将每个框放置到新框中之前,每个框可以包含特定数量的变化。每个变体都属于一个装运箱

这似乎是一个非常具体的问题,我相信在互联网上有一个模糊(但很好)的答案。我不知道该找什么来帮助我

变异 订货单、装箱单

更新1
packages=order.shipping\u type\u in\u order.reduce([])do\124;项目、箱子|
温度=[]
放置箱子[:装运标识]
订单。扁平包装清单。减少([])do | x,项目|
如果框[:装运\u id]=[项目装运\u类型.id]
我想应该是这样的

boxes[index] << [item]
框[索引]
class ShippingBox < ActiveRecord::Base
   attr_accessible :name, :weight, :box_length, :box_height, :box_depth, :maximum_quantity
end
packages = o.variations.reduce([]) do |boxes, item|
    this_box_type = item.shipping_type
    boxes << [this_box_type.name] if boxes.empty?

    boxes.each_with_index do |box, index|
        if boxes[index].length < this_box_type.maximum_quantity
            boxes[index] << item
        end
    end
end
=> [["25x6x6", #<Variation id: 20, cart_id: 4, order_id: nil, quantity: 2, created_at: "2013-11-26 17:49:53", updated_at: "2013-11-26 17:50:08">]] 
[["25x6x6", [#<Variation id: 20, cart_id: 4, order_id: nil, quantity: 1, created_at: "2013-11-26 17:49:53", updated_at: "2013-11-26 17:50:08">, #<Variation id: 20, cart_id: 4, order_id: nil, quantity: 1, created_at: "2013-11-26 17:49:53", updated_at: "2013-11-26 17:50:08">]], ["30x5x5", [#<Variation id: 21, cart_id: 4, order_id: nil, quantity: 1, created_at: "2013-11-26 17:49:53", updated_at: "2013-11-26 17:50:08">]]]
[{:shipping_id=>4}, {:shipping_id=>2}]
[#<Variation id: 20, cart_id: 4, order_id: nil, quantity: 1, created_at: "2013-11-26 17:49:53", updated_at: "2013-11-28 14:33:35">, #<Variation id: 24, cart_id: 4, order_id: nil, quantity: 1, created_at: "2013-11-28 14:00:59", updated_at: "2013-11-28 14:00:59">, #<Variation id: 25, cart_id: 4, order_id: nil, quantity: 1, created_at: "2013-11-28 14:33:32", updated_at: "2013-11-28 14:33:32">]
packages = order.shipping_types_in_order.reduce([]) do |items, boxes|
    temp = []
    puts boxes[:shipping_id]
    order.flat_packing_list.reduce([]) do |x, item|
        if boxes[:shipping_id] == [item.shipping_type.id]
            temp << item
        end
    end
    boxes[:shipping_id] << temp
end
items = Array.new
packages = order.shipping_types_in_order.reduce([]) do |x, box|
    pack_list = { box: box[:shipping_id], packages: [] }
    total = order.flat_packing_list.reduce([]) do |y, item|
        puts "shipping_id: #{item.variation.shipping_type.id}"
        if box[:shipping_id] == item.variation.shipping_type.id
            pack_list[:packages] << item
        end
    end
    items << pack_list
end
boxes[index] << [item]