我有一种情况,我有一个产品表,它有一个JSON字段,我必须调用一个方法来更新它。所以有两种方法
Product.all.each do |pr|
pr.update_column(:boolean_tree, pr.change_boolean_tree)
end
除了表现之外,没有任何问题。为了提高性能,我们可以运行原始SQL 。哪个肯定能正常工作,但不能用铁路。
我在想这种情况是否可以使用 update_all 。有什么想法吗?
答案 0 :(得分:2)
据我所知,除非您尝试使用相同的内容更新所有记录,否则您将无法使用update_all
。当数据库中有很多产品时,指令Product.all
会在开始更新之前将所有记录加载到内存中。
我建议使用Activerecord中的find_in_batches
方法(see doc)批量加载产品。