用于编辑 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
我是 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