【问题标题】:Loop for editing shopify collections用于编辑 shopify 集合的循环
【发布时间】:2017-05-23 08:08:28
【问题描述】:

我对 Ruby 脚本非常陌生,并且已经制作了一个脚本来遍历 Shopify 中的产品集合以更改所有集合的“产品匹配条件”,但除非我指定,否则我似乎根本无法让它工作集合 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

【问题讨论】:

    标签: ruby-on-rails ruby api shopify smartcollection


    【解决方案1】:

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

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

    附:在 where 子句中,您可以根据您的条件提供任何哈希

    在您的情况下发生错误是因为 find(:all) 返回一个集合而不是单个实例,这就是您无法执行 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 2020-02-02
      • 2018-04-19
      • 1970-01-01
      相关资源
      最近更新 更多