2012-09-12 82 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

具有不同訂單項屬性的訂單項之間的唯一區別將是訂單項屬性本身。

要爲您的散列創建唯一鍵,我會以某種方式(如果它們存在)編碼這些屬性並將它們粘貼到該鍵的末尾。一個簡單的哈希函數應該可以做到。具有相同訂單項屬性的產品將具有相同的散列,因此它們仍應相應地堆疊。