Shopify订单项属性标识符

时间:2012-09-12 13:08:51

标签: ruby-on-rails api shopify

我们正在开发我们的Rails应用,以便考虑在Shopify上使用新“订单项属性”的产品。

我们的部分应用程序会查看整个客户订单,然后计算所有订单中包含的特定产品的总数。

因此,您有3个订单使用相同的产品,我们的应用程序将在列表中显示单个产品,其中包含所有3个订单的总数量。很好,很容易采摘。

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

我可以从Order对象中获取属性ok,并且我知道同一产品可以在订单中多次添加不同的订单项属性。

但是订单上的内容.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 个答案:

答案 0 :(得分:1)

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

要为哈希创建唯一键,我会以某种方式对属性进行编码(如果它们存在)并将它们添加到键的末尾。一个简单的哈希函数应该可以解决问题。具有相同订单项属性的产品将具有相同的哈希值,因此它们仍应相应地堆叠。