ActiveRecord Update_all为变量值

时间:2014-09-29 12:14:21

标签: ruby activerecord update-all

我正在寻找一种方法来更新所有记录,条件是cur_val + 100:

我有一个表格 id 得分字段的建议,我希望所有具有特定ID的条目都能获得分数,例如:

Suggestion.where(id: ids_list).update_all(score: score+100)

我该怎么做?

1 个答案:

答案 0 :(得分:2)

尝试普通SQL,阅读update_all

Suggestion.where(id: ids_list).update_all('score = score + 100')

但请记住update_all不会触发Active Record回调或验证。

一些提示:

你可以在Ruby中完成,但这非常糟糕:

Suggestion.where(id: ids_list).find_each do |x|
  x.update(score: x.score + 100)
end

这样的事情应该发生在数据库中。