###前提・実現したいこと
ruby(rails)で、数量(口座残高)を扱う口座モデル(Account)をつくり、
一部の例外な口座を除き、ほぼ全ての口座残高を更新したいと考えています。
例えば、
Account(口座モデル)のidが19番(例外な口座)以外の口座レコードを取得して、
取得した口座達の残高(balanceカラム)に対して+1000を加算する一括更新をしたいとします。
Account.where.not(id: 19).update_all(balance: 1000)と記述することで
例外(この場合は、Accountのidが19のレコード)を除いた
口座群を取得して、
残高(balance)を数値1000に書き換えて
一括更新できることはわかったのですが、
この場合、現状の残高を無視して全ての残高が1000になってしまいます。
Account.where.notで取得した多数の口座(Accountモデルのレコード)の残高(数値型のカラム)に対してたし算をして一括更新をしたいのですが、
どうすればいいのか教えて頂ければ幸いです。
以下は現状のコードです。
begin ActiveRecord::Base.transaction{ Account.where.not(id: 19).update_all(balance: Account.where.not(id: 19).balance+ 1000) } end
###補足情報(言語/FW/ツール等のバージョンなど)
Rails 5.1.3
ruby 2.4.1

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/24 12:00 編集
2017/12/24 13:06
2017/12/24 23:15