Avi*_*hai 6 ruby postgresql activerecord transactions ruby-on-rails
如何使用Rails中的事务块一次更新/保存模型的多个实例?
我想更新数百条记录的值; 每条记录的值都不同.这不是一个属性的批量更新情况.Model.update_all(attr:value)在这里不合适.
MyModel.transaction do
things_to_update.each do |thing|
thing.score = rand(100) + rand(100)
thing.save
end
end
Run Code Online (Sandbox Code Playgroud)
save似乎发布它自己的事务,而不是将更新批处理到周围的事务中.我希望所有更新都进入一次重大交易.
我怎么能做到这一点?
我不确定,但可能您将多个事务与多个查询混淆了。
您发布的代码将创建一个事务(例如,如果发生异常,则所有更新都将回滚),但每个事务save都会导致单独的更新查询。
如果可以使用 SQL 而不是 Ruby 代码执行更新,那么这可能是最好的方法。
| 归档时间: |
|
| 查看次数: |
3289 次 |
| 最近记录: |