【问题标题】:Rails update_all for each array elementRails update_all 为每个数组元素
【发布时间】:2022-01-03 07:42:16
【问题描述】:

我有一个follow方法,效果很好

def update 
  ids = params["_json"].map { |hash| hash["id"] }  # --> return [10, 20, 30, 40 ] 
  positions = params["_json"].map { |hash| hash["position"] } # --> return [0, 1, 2, 3 ] 
  
  query = MyQueryQuery.new
  query.visible = true
  query.active = true
  
  available = query.fetch.map(&:id)
      ::Model.where(id: (ids & available))
        .update_all(show_home: true, updated_at: DateTime.now)
end

如何更改此方法以使用位置数组中的每个元素更新模型中名为位置的新列?例如在 Model(id: 10, position: 0), Model(id: 20, position: 1), Model(id: 30, position: 2) 等......

【问题讨论】:

    标签: ruby-on-rails ruby activerecord


    【解决方案1】:

    您可以从位置中删除 .map 并从哈希中获取要更新的元素,就像这样。

    positions = params["_json"]
     
    positions.each do |p| 
      model = Model.find(p['id'])
      model.update(position: p['position'])
    end
    

    【讨论】:

      猜你喜欢
      • 2013-10-30
      • 2017-04-01
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 2015-08-15
      • 2014-06-19
      • 2022-01-12
      • 1970-01-01
      相关资源
      最近更新 更多