2012-09-12 4 views
1

우리는 Rails 어플리케이션을 개발하여 Shopify의 새로운 "품목 등록 정보"를 사용하는 제품을 고려하고 있습니다.Shopify 품목 등록 정보 식별자

우리 앱의 일부는 고객 주문을 전체적으로 살펴본 다음 모든 주문에 총 주문 수가 얼마나 많은지 계산합니다.

동일한 제품으로 3 개의 주문을 처리하면 Google의 앱은 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

광고 항목 속성이 다른 광고 항목의 유일한 차이점은 광고 항목 속성 자체입니다.

해시에 고유 한 키를 만들려면 어떻게 든 속성을 인코딩하고 키의 끝에 붙입니다. 간단한 해시 함수가 트릭을 수행해야합니다. 동일한 광고 항목 속성을 가진 제품은 동일한 해시를 가지므로 적절하게 스택해야합니다.