我正在编写一个应用程序,它将位于供应商专有库存管理系统和他们的 Shopify 商店之间。该应用程序将根据库存管理系统生成的新数据定期更新 Shopify。它还将为 Shopify webhook 提供端点。
我目前正在做这样的事情(省略了很多东西的伪红宝石):
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
别处:
def update_variant_with_proxy(variant_proxy)
shopify_variant = ShopifyAPI::Variant.find(variant_proxy.shopify_id)
shopify_variant.update_attributes({some attributes here})
end
这似乎非常低效,因为我必须先获取每个更新的 ShopifyAPI::Product 和 ShopifyAPI::Variant 才能更新它们(我将它们的 id 缓存在本地)。一个更新周期大约需要 25 分钟,更新 24 个产品,每个产品有 16 个变体。Rails 用不到 2 秒的时间更新我的产品/变体代理。另外 99% 的时间都花在与 Shopify 交谈上。我一定做错了什么。
鉴于我知道远程对象的 id 有没有办法直接更新它而不必先获取它?
干杯,-托梅克