Ruby on rails活动记录:使用update_all通过同一记录中的另一个字段更新字段

时间:2015-05-08 04:59:38

标签: ruby-on-rails activerecord

如何将 update_all 用于以下目的:

UPDATE  table_name set field1=field2 * 2 where id = 1

2 个答案:

答案 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)}