MongoDB有一种称为安全模式的东西,它默认是关闭的,这意味着无论你告诉它执行它,它都会返回OK。如果将安全模式设置为on,如果执行mongo标准非法的查询,则会引发异常。
在开发中你通常会做的是这个,
development: sessions: default: hosts: - localhost:27017 database: mongoid username: user password: password options: safe: true
之后你可以发布我们的例外,我们可以尝试解决它!
这是因为 update 不接受属性,它只接受选项,如 @thing.update(validate: false) 。
update
@thing.update(validate: false)
为了使您的代码有效,您可以执行以下操作:
if @thing.update_attributes(thing_params) #... end
要么:
@thing.attributes = thing_params if @thing.save #... end
@thing.attributes = thing_params if @thing.update #... end
如果您正在使用嵌入式属性(无论是动态创建的哈希还是明确定义的关系),请使用 upsert 代替 update 可能会有所帮助。
upsert
如果条目存在,则Upsert会重写该字段,如果不存在,则会创建。
即
person = Person.new( first_name: "Heinrich", last_name: "Heine" ) person.upsert
示例来自: http://mongoid.org/en/mongoid/docs/persistence.html