如何将 update_all 用于以下目的:
UPDATE table_name set field1=field2 * 2 where id = 1
答案 0 :(得分:5)
在Rails4中,你可以做到
Model.where(id: 1).update_all("field = field2 * 2")
在早期版本的Rails中,您可以将条件传递给update_all
,就像这样
Model.update_all("field = field2 * 2", {:id => 1})
注意:
update_all 不会触发Active Record回调或验证
答案 1 :(得分:0)
我不是100%明确你的意图,但是如果你只是想对你所在的控制台运行的所有记录进行1次更新,那么在你的控制台中运行这个记录应该可行。
Model.where("id = 1").each { |n| (n.field1 = n.field2*2)}