Ruby on rails Shopify API-如何使用数千种产品更新Smart Collection上的产品订单?

Ruby on rails Shopify API-如何使用数千种产品更新Smart Collection上的产品订单?,ruby-on-rails,shopify,Ruby On Rails,Shopify,我正在使用Shopify的Ruby Gem组织产品商店中的智能收藏。从本质上说,我试图每晚更新这些集合的产品订单(它们的排序顺序设置为手动)。我们的目标是根据销售数据对产品进行分类,但也要在列表末尾列出缺货项目 我成功地编写了一个脚本,在大多数集合中都能很好地工作: @scs = ShopifyAPI::SmartCollection.find(:all,params: {limit: 250}) @scs.each do |sc| sc.order(products: @pro

我正在使用Shopify的Ruby Gem组织产品商店中的智能收藏。从本质上说,我试图每晚更新这些集合的产品订单(它们的排序顺序设置为手动)。我们的目标是根据销售数据对产品进行分类,但也要在列表末尾列出缺货项目

我成功地编写了一个脚本,在大多数集合中都能很好地工作:

@scs = ShopifyAPI::SmartCollection.find(:all,params: {limit: 250})
@scs.each do |sc|
        sc.order(products: @products_in_order)
        sc.save
end
不幸的是,如果集合大于几百个产品,URI就会变得太长,我会遇到以下错误:

ActiveResource::ClientError:失败。响应代码=414。回应 message=请求URI太大

是否有任何方法可以高效地更新大型智能集合上的产品订单?我的一些收藏中有超过1000种产品,我不想单独更新每个“收藏”,因为我将每天运行这个脚本


非常感谢您的建议。

您目前的技术水平有限。您可能要做的第一件事是通过分页来迭代所有集合。不分页意味着您永远不会接触到集合中超过250个产品的所有产品

第二,在分页时,针对每个集合构建一个包含排序所需详细信息的哈希。否则,您将存储一大堆内存不足的河马,这将把您的内存足迹吹到地狱。然后使用散列来订购产品并保存它们


由于这是脚本,并且可以在夜间运行,所以可以将其吸收并按产品进行排序/存储。不像你用你的蛮力采摘西红柿或西瓜

你好,大卫,谢谢你的回复。我确实拉了所有的产品。以上限制是针对集合查询的(我的集合少于250个)。变量@products\u的顺序包括集合中的所有产品。问题是如果有数百种产品,API调用的URI就会变得太长。。按产品分配排序顺序没有问题,除非您有数千个产品和数百个集合……这很容易变成每天30k API调用,而且似乎不是最明智的资源使用……您为什么要这样做?一个拥有1000多种产品的集合无论如何都会变得相当笨拙(客户不会一页一页地浏览它们)。无论如何,这听起来像是密码被破解了。ORDERBYUPDATE应该是一个PUT,因此不应该考虑任何URI长度。如果这是事实,并且Shopify错误地标记了错误,那么当您批量更新时会发生什么?如果应用一组100个产品ID,当应用第二组100个产品ID时会发生什么?