cur_val + 100 という特定の条件ですべてのレコードを更新する方法を探しています。
IDフィールドとスコアフィールドを持つテーブル Suggestions があり、特定の ID を持つすべてのエントリにスコア バンプを受け取るようにします。
Suggestion.where(id: ids_list).update_all(score: score+100)
それ、どうやったら出来るの?
cur_val + 100 という特定の条件ですべてのレコードを更新する方法を探しています。
IDフィールドとスコアフィールドを持つテーブル 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
このようなことがデータベースで発生するはずです。