gemのバージョン
mongoid 6.1.1
MongoDBのバージョン
Docker使用
mongo:3.6.12
概要
一対多のモデルに対する update_all
が正しく動いてなさそう...
雑な例 (実際のコードとは関係ありません)
Orderモデルにpending(入金待ち)、complete(決済完了)とcancel(購入キャンセル)のステータスがあって、Userが退会ボタン押下した時にcomplete(決済完了)になっていないOrderのキャンセルを行う場合。
$ user.orders.update_all(status: 'cancel') $ user.orders.first.status => pending # 本来はcancelに更新されるべきはず $ user.orders.update_all(status: 'cancel') $ user.orders.first.status => cancel
最後に
直近では update_all
を使わずに実装することで回避しましたが、バグ?っぽいので時間を見つけてプルリクを送ってみたいと思います。