2012-09-12 80 views
1

我们正在研究Rails应用,以便将Shopify上使用新“订单项属性”的产品考虑在内。Shopify产品系列产品属性标识

我们的应用程序的一部分将整个客户订单视为一个整体,然后计算所有订单中总共包含多少个特定产品。

所以你有3个订单,其上有同样的产品,我们的应用程序将显示一个列表中的单个产品,所有3个订单的总数量合计。很好,很容易采摘。

但是,我想单独将具有订单项属性的产品放入列表中的单独产品中,以便可以使用属性显示这些产品。

我可以从Order对象中获取属性,我知道同一个产品可以按顺序多次连接不同的订单项属性。

但是order.line_item上的内容告诉我这是“不同的产品”?即相同的产品,但不同的属性,什么告诉他们appart除了属性本身?

实例行项目:

"line_items": [ 
    { 
     "fulfillment_service": "manual", 
     "fulfillment_status": null, 
     "grams": 200, 
     "id": 466157049, 
     "price": "199.00", 
     "product_id": 632910392, 
     "quantity": 1, 
     "requires_shipping": true, 
     "sku": "IPOD2008GREEN", 
     "title": "IPod Nano - 8gb", 
     "variant_id": 39072856, 
     "variant_title": "green", 
     "vendor": null, 
     "name": "IPod Nano - 8gb - green", 
     "variant_inventory_management": "shopify", 
     "properties": [ 
     { 
      "name": "Custom Engraving", 
      "value": "Happy Birthday" 
     } 
     ] 
    }, 

这是我们的代码看起来像添加了订单项属性支持之前。

def build_products_list(orders) 
    products = {} 
    orders.each do |order| 
    order.line_items.each do |item| 
     products[item.name] = {} unless products[item.name] 
     products[item.name]['sku'] = item.sku 
     products[item.name]['qty'] = (products[item.name]['qty'] ? products[item.name]['qty'] : 0) + item.quantity 
    end 
    end 
    products 
end 

,所以我需要的产品[item.name]改为独特的每个产品,包括那些有订单项属性,以便它们显示为单独的产品的东西。

如何更改它?

回答

1

具有不同订单项属性的订单项之间的唯一区别将是订单项属性本身。

要为您的散列创建唯一键,我会以某种方式(如果它们存在)编码这些属性并将它们粘贴到该键的末尾。一个简单的哈希函数应该可以做到。具有相同订单项属性的产品将具有相同的散列,因此它们仍应相应地堆叠。