2014-10-09 2 views
0

Для магазина Shopify Я хочу создать продукт с metafield, используя один звонок API.Как создать продукт с помощью метафила, используя один вызов API?

Вот что я хочу:

require 'shopify_api' 

ShopifyAPI::Base.site = "https://<REDACTED>:<REDACTED>@<REDACTED>.myshopify.com/admin"; 

new_product = ShopifyAPI::Product.new 
new_product.title = "Burton Custom Freestlye 151" 
new_product.product_type = "Snowboard" 
new_product.vendor = "Burton" 

new_product.variants = [ 
    { 
    "option_1" => "First", 
    "price" => 100, 
    "sku" => 'test123', 
    "metafields" => [ 
     { 
     "key" => "item_size", 
     "value" => '125gr', 
     "value_type" => "string", 
     "namespace" => "global" 
     } 
    ] 
    } 
] 

new_product.save 

new_product.metafields 
# => #<ActiveResource::Collection:0x007f8de3bf9820 
@elements=[], 
@original_params={}, 
@resource_class=ShopifyAPI::Metafield> 

Но это не работает.

Я знаю, что я мог бы сделать следующее:

require 'shopify_api' 

ShopifyAPI::Base.site = "https://<REDACTED>:<REDACTED>@<REDACTED>.myshopify.com/admin" 

new_product = ShopifyAPI::Product.new 
new_product.title = "Burton Custom Freestlye 151" 
new_product.product_type = "Snowboard" 
new_product.vendor = "Burton" 

new_product.variants = [ 
    { 
    "option_1" => "First", 
    "price" => 100, 
    "sku" => 'test123' 
    } 
] 

new_product.save 

new_product.add_metafield(ShopifyAPI::Metafield.new(:namespace => "global", :key => "item_size", :value => "125gr", :value_type => "string")) 

new_product.metafields 

Но так как я должен импортировать ~ 26000 продукт и есть API ограничения вызовов 2 в секунду, мне нужно быть как можно более эффективным.

Что я могу попробовать дальше?

ответ

0

Шэйн, сотрудник Shopify pointed out:

Похоже, вы кладете в metafield на варианте, в этом примере, а затем в конце вы смотрите на продукт, чтобы увидеть, если есть любые метафилы. Оба продукта и варианты могут иметь метафили, но если вы поместите метафилд в вариант, то там он останется.

Вот как создать продукт с metafield продукта:

require 'shopify_api' 

ShopifyAPI::Base.site = "https://<REDACTED>:<REDACTED>@<REDACTED>.myshopify.com/admin" 

new_product = ShopifyAPI::Product.new 
new_product.title = "Burton Custom Freestlye 151" 
new_product.product_type = "Snowboard" 
new_product.vendor = "Burton" 

new_product.variants = [ 
    { 
    "option_1" => "First", 
    "price" => 100, 
    "sku" => 'test123' 
    } 
] 

new_product.metafields = [ 
    { 
    "key" => "item_size", 
    "value" => '125gr', 
    "value_type" => "string", 
    "namespace" => "global" 
    } 
] 

new_product.save