我正在寻找一种方法来更新具有特定条件的所有记录,它们的 cur_val + 100:
我有一个带有id和score字段的表 Suggestions,我希望所有具有特定 id 的条目都能收到分数提升,例如:
Suggestion.where(id: ids_list).update_all(score: score+100)
我怎么做?
我正在寻找一种方法来更新具有特定条件的所有记录,它们的 cur_val + 100:
我有一个带有id和score字段的表 Suggestions,我希望所有具有特定 id 的条目都能收到分数提升,例如:
Suggestion.where(id: ids_list).update_all(score: score+100)
我怎么做?
尝试简单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
这样的事情应该发生在数据库中。