用于编辑 shopify 集合的循环

Loop for editing shopify collections

我是 Ruby 脚本编写的新手,我制作了一个脚本来循环访问 Shopify 中的产品系列,以更改所有系列的 'product match condition',但我似乎无法实现除非我指定集合 ID,否则根本无法工作。

我一直收到错误提示 "NoMethodError: undefined method `disjunctive=' for #",但我不明白为什么。我写的脚本如下:

收集循环失败:

count = ShopifyAPI::SmartCollection.count
page = 1 
while count > 0
  collectionsEdits = ShopifyAPI::SmartCollection.find(:all,:params => {:page=> page})
  collectionsEdits.disjunctive = 'true'
  collectionsEdits.save
  count = count - 50
  page = page + 1
end

特定集合 ID:

collectionUpdate = ShopifyAPI::SmartCollection.find(437592964)
collectionUpdate.disjunctive = 'true'
collectionUpdate.save

如有任何帮助,我们将不胜感激!

API 文档:https://help.shopify.com/api/reference/smartcollection

如果 Shopify::SmartCollection 只是一个 ActiveRecord 模型,所以我建议您这样写:

ShopifyAPI::SmartCollection.where(page: page).update_all(disjunctive: 'true')

P.S。在 where 子句中,您可以根据您的条件提供任何散列

在你的情况下发生错误是因为 find(:all) return 是一个集合而不是单个实例,这就是你无法执行 disjunctive = 'true'

的原因

因此,如果您仍想按照自己的方式编写,请按以下方式进行:

count = ShopifyAPI::SmartCollection.count
page = 1 
while count > 0
  collectionsEdits = ShopifyAPI::SmartCollection.find(:all,:params => {:page=> page})
  collectionEdits.each do |collectionEdit|
    collectionEdit.disjunctive = 'true'
    collectionEdit.save
  end
  count = count - 50
  page = page + 1
end