Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Shopify行项目属性标识符_Ruby On Rails_Api_Shopify - Fatal编程技术网

Ruby on rails Shopify行项目属性标识符

Ruby on rails Shopify行项目属性标识符,ruby-on-rails,api,shopify,Ruby On Rails,Api,Shopify,我们正在开发Rails应用程序,以便将使用Shopify上新“行项目属性”的产品考虑在内 我们应用程序的一部分将客户订单视为一个整体,然后计算所有订单中包含的特定产品的总数 因此,如果您有3个订单上有相同的产品,我们的应用程序将在列表中显示单个产品,并显示所有3个订单的总数量。很好,很容易挑选 但是,我想将具有行项目属性的产品分离为列表中的单独产品,以便这些产品可以与属性一起显示 我可以从Order对象获得属性ok,我知道同一产品可以在订单中多次附加不同的行项目属性 但是,order.line_

我们正在开发Rails应用程序,以便将使用Shopify上新“行项目属性”的产品考虑在内

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

因此,如果您有3个订单上有相同的产品,我们的应用程序将在列表中显示单个产品,并显示所有3个订单的总数量。很好,很容易挑选

但是,我想将具有行项目属性的产品分离为列表中的单独产品,以便这些产品可以与属性一起显示

我可以从Order对象获得属性ok,我知道同一产品可以在订单中多次附加不同的行项目属性

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

行项目示例:

  "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]更改为每个产品的唯一性,包括那些具有行项目属性的产品,以便它们显示为单独的产品


要将其更改为什么?

具有不同行项目属性的行项目之间的唯一区别将是行项目属性本身


为了为散列生成唯一的键,我会以某种方式对属性进行编码(如果它们存在)并将它们固定到键的末尾。一个简单的散列函数应该可以做到这一点。具有相同行项目属性的产品将具有相同的哈希,因此它们仍应相应地堆叠。

具有不同行项目属性的行项目之间的唯一区别将是行项目属性本身

为了为散列生成唯一的键,我会以某种方式对属性进行编码(如果它们存在)并将它们固定到键的末尾。一个简单的散列函数应该可以做到这一点。具有相同行项目属性的产品将具有相同的哈希,因此它们仍应相应地进行堆栈