我正在使用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 = Request-URI太大。
有没有办法以有效的方式更新大型智能收藏品的产品订单?我的一些馆藏有超过1000种产品,我不想单独更新每个“收集”,因为我每天都会运行这个脚本。
感谢任何建议。
答案 0 :(得分:0)
您目前的技术有限。您可能想要做的第一件事是通过分页迭代所有集合。不分页意味着您永远不会接触超过250种产品的集合中的所有产品。
其次,在您按页面时,按照集合构建一个哈希,其中包含对其进行排序所需的详细信息。否则,你将存储一大堆内存饥饿的河马,这将使你的记忆足迹下降到地狱。使用哈希然后订购产品并保存它们。
由于这是脚本编写,并且可以在晚上运行,因此可以按产品进行分类/存储。不像你用野蛮力量采摘西红柿或西瓜。