下記のようなコードを書いています。
ruby
1users = User.where(hoge: nil) # User(hoge: nil), User(hoge: nil), User(hoge: true) 2users.update_all(hoge: true) # User(hoge: true), User(hoge: true), User(hoge: true) 3 4p users # [User(hoge: nil), User(hoge: nil)]を期待するが[]が帰ってくる
あくまで推測なのですが、p users
したタイミングでUser.whereが実行されるため、その時はもうupdate_allが走っていて、結果が取れていないと考えています。
例えば以下のようにすれば、意図通りに結果が得られます。
ruby
1users = User.where(hoge: nil) # User(hoge: nil), User(hoge: nil), User(hoge: true) 2p users # [User(hoge: nil), User(hoge: nil)] 3users.update_all(hoge: true) # User(hoge: true), User(hoge: true), User(hoge: true) 4 5p users # [User(hoge: nil), User(hoge: nil)]
p users
したら、実際にUser.where
が実行されるから上手く行っているのかもしれませんが、綺麗に書くとしたら
ruby
1users = User.where(hoge: nil).今すぐ実行 2users.update_all(hoge: true) 3 4p users # [User(hoge: nil), User(hoge: nil)]
のような、今すぐ実行メソッド(のようなもの)を叩きたいと思っています。
何かアドバイスいただけませんでしょうか。よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/18 01:45