繁体   English   中英

如何批量更新数组中模型的字段?

[英]How do I mass update a field for models in an array?

我正在使用Rails 4.2.7。 如何在不实际将信息保存到数据库的情况下大规模更新模型数组的字段? 我试过了

my_objcts_arr.update_all(my_object: my_object)

但这会导致错误

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

我意识到我可以遍历数组并单独更新每个对象,但是我发现我不知道Ruby中有一种流畅的单行方式。

update_all需要被称为一个类层次的活动记录的模型/关系,即,用户或TaxReturn。 这是一个有点相关的SO帖子,显示了一些示例 ,这是update_all的api文档 它将直接将UPDATE发送到db(毕竟这是一个活动的记录方法),所以它不是您想要的。

您最好自己使用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"}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM