ruby-on-rails-3 – 是否有等效的ActiveRecord :: Relation.upda
发布时间:2020-12-17 02:16:09 所属栏目:百科 来源:网络整理
导读:我想执行ActiveRecord模型的批量更新,类似于: MyModel.where(:field1="value1").update_all(:field1="value2") 我在MyModel上有一个观察者,我需要在这次更新时触发,我不认为这种情况发生了.此行为与文档一致. http://apidock.com/rails/ActiveRecord/Relati
我想执行ActiveRecord模型的批量更新,类似于:
MyModel.where(:field1=>"value1").update_all(:field1=>"value2") 我在MyModel上有一个观察者,我需要在这次更新时触发,我不认为这种情况发生了.此行为与文档一致. http://apidock.com/rails/ActiveRecord/Relation/update_all 是否有“内置”或“最佳实践”方式进行批量更新并触发观察者,而不是迭代(例如): MyModel.where(:field1=>"value1").each{ |m| m.update_attributes(:field1=>"value2") } 解决方法
不,没有这样的方式.原因可能是每个解决方案无论如何都必须迭代,因为每个对象的所有回调都必须被调用. ‘update_all’存在的原因是为开发人员提供了直接使用mysql API调用批量更新记录(或多或少)的可能性……从某种意义上说,可以精确地绕过任何活动记录功能,如验证和回调.
我希望这对你来说是一个令人满意的答案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |