我正在编写一个应用程序,该应用程序将位于供应商专有的库存管理系统与其Shopify商店之间。该应用程序将根据库存管理系统生成的新数据定期更新Shopify。它还将提供Shopify Webhooks的端点。
我目前正在做这样的事情(伪红宝石,省略了很多东西):
def update_product_with_proxy(product_proxy)
product_proxy.variant_proxies.dirty.each do |variant_proxy|
update_variant_with_proxy(variant_proxy)
end
if product_proxy.dirty_proxy
shopify_product = ShopifyAPI::Product.find(product_proxy.shopify_id)
shopify_product.update_attributes({some attributes here})
end
end
Run Code Online (Sandbox Code Playgroud)
别处:
def update_variant_with_proxy(variant_proxy)
shopify_variant = ShopifyAPI::Variant.find(variant_proxy.shopify_id)
shopify_variant.update_attributes({some attributes here})
end
Run Code Online (Sandbox Code Playgroud)
这似乎效率很低,因为我必须先获取每个更新的ShopifyAPI :: Product和ShopifyAPI :: Variant,然后才能更新它们(我的ID在本地缓存)。一个更新周期大约需要25分钟,更新周期将更新24个产品的16个变体。Rails花了不到2秒的时间来更新我的产品/各种代理。其余99%的时间都花在与Shopify交谈上。我一定做错了什么。
鉴于我知道远程对象的ID,有没有一种方法可以直接更新它而不必先获取它?
干杯,-tomek