"value2") 我在 My-6ren">
gpt4 book ai didi

ruby-on-rails-3 - 是否有相当于 ActiveRecord::Relation.update_all 的东西可以触发回调/观察者?

转载 作者:行者123 更新时间:2023-12-02 23:46:05 24 4
gpt4 key购买 nike

我想执行 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 调用批量更新记录(或多或少)......在某种意义上精确地规避任何 activerecord 功能,例如验证和回调。

希望这是您满意的答案。

关于ruby-on-rails-3 - 是否有相当于 ActiveRecord::Relation.update_all 的东西可以触发回调/观察者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7763292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com