如何大规模更新数组中模型的字段



我使用的是Rails 4.2.7。如何大规模更新模型数组的字段,而不实际将该信息保存到数据库?我试着

my_objcts_arr.update_all(my_object: my_object)

但是这会导致错误

NoMethodError: undefined method `update_all' for #<Array:0x007f80a81cae50>

我意识到我可以遍历数组并单独更新每个对象,但我认为Ruby中有一种更圆滑的单行方式,我没有意识到。

update_all需要在类级活动记录模型/关系上调用,即User或TaxReturn。这里是一个有点相关的SO帖子,展示了一些例子,这里是update_all的api文档。它将直接将UPDATE发送到数据库(毕竟这是一个活动的记录方法),所以这不是您想要的。

你最好自己用collect或类似的方法迭代和更新值,这只有一行。

foo = [{:a=>"a", :b=>"b"}, {:a=>"A", :b=>"B:}] 
// => [{:a=>"a", :b=>"b"}, {:a=>"A", :b=>"B"}]
foo.collect{|x| x[:a]="C"} 
// => ["C", "C"]
foo 
// => [{:a=>"C", :b=>"b"}, {:a=>"C", :b=>"B"}]

相关内容

  • 没有找到相关文章

最新更新