2

cur_val + 100 という特定の条件ですべてのレコードを更新する方法を探しています。

IDフィールドとスコアフィールドを持つテーブル Suggestions があり、特定の ID を持つすべてのエントリにスコア バンプを受け取るようにします。

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

それ、どうやったら出来るの?

4

1 に答える 1

3

プレーンを試して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

このようなことがデータベースで発生するはずです。

于 2014-09-29T12:20:30.847 に答える