我有一个如下定义的活动记录关系:
contacts = Contact.where("status = 'waiting'")
然后我运行.each
循环并根据某些逻辑更改联系人的属性。
我不想在每个联系人上做save!
...如何在循环后更好地保存整个联系人关系?
contacts.each do |contact|
//Change properties of contact here
end
如何在包含新属性后保存新更新的联系人activerecord关系?
最有效的方法是不能通过联系人保存进行联系。
答案 0 :(得分:1)
update_all使您免于执行循环并为您执行保存,这是文档。 https://apidock.com/rails/v4.0.2/ActiveRecord/Relation/update_all
答案 1 :(得分:0)
您可以使用activerecord-import。如您所说,您可以为每个联系人分配所有新值,最后使用此upsert以批量方式保存更改。