我使用的是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"}]