gpt4 book ai didi

ruby-on-rails - Mongoid 更新查询将其他属性设置为 nil?

转载 作者:太空宇宙 更新时间:2023-11-03 17:56:36 24 4
gpt4 key购买 nike

我正在尝试在 Rails 控制台中对我的数据运行更新,出于某种原因,更新一个属性会导致 Mongoid 将其他属性设置为空:

1.9.3p194 :044 > User.first().cart.cartitems
=> [#<Cartitem _id: 5047eef3c8bafa761100001a, _type: nil, quantity: 1000, scentid: 1>]
1.9.3p194 :047 > User.first().cart.cartitems.where(scentid:1).update(quantity:100)
=> nil
1.9.3p194 :048 > User.first().cart.cartitems
=> [#<Cartitem _id: 5047ef65c8bafa761100001c, _type: nil, quantity: 100, scentid: nil>]

注意 scentid 是如何设置为 nil 的。我也尝试过使用 .set(:quantity, 100) 但是当我再次查询 cartitems 时这不会持续存在。

这是正常行为吗?

谢谢!

最佳答案

是否有可能您正在运行纯 MongoDB rub​​y​​ 驱动程序 .update() 方法而不是 Mongoid 持久性方法?如果是这样,观察到的行为将是意料之中的。 update() 重写整个文档,如下所述:http://api.mongodb.org/ruby/current/file.TUTORIAL.html#Updating_Documents_with_update

您可以将 $set 运算符用于:

.update({"scentid" => 1}, {"$set" => {"quantity" => 100}})

或者尝试使用 Mongoid 的 update_attributes() 或任何其他合适的持久化方法:http://mongoid.org/en/mongoid/docs/persistence.html#atomic

关于ruby-on-rails - Mongoid 更新查询将其他属性设置为 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12291534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com