加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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调用批量更新记录(或多或少)的可能性……从某种意义上说,可以精确地绕过任何活动记录功能,如验证和回调.

我希望这对你来说是一个令人满意的答案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读