Mongoid更新属性:当集合中尚不存在字段名称时如何不插入

时间:2012-08-15 17:56:03

标签: ruby-on-rails mongoid

我正在尝试在Rails 3应用程序中使用Mongoid执行update_attributes

我遇到的问题是:

假设我的收藏品包含以下字段:

{“姓名”:“foo”,“email”:“bar”}

以下是方案

如果我这样做:

@person = Person.where(:Name => "foo", :_id = "some_id")

然后我这样做:

@person.update_attributes(:Name => "baba-fooka", :Last_Name => "baba-bara")

上面的代码行更新mongodb中的记录,但还会在文档中添加新字段

如何使用update_attributes方法进行验证,该验证不允许插入尚不存在的字段

1 个答案:

答案 0 :(得分:1)

听起来你想要的是在mongoid配置文件中将allow_dynamic_fields设置为false。默认情况下,动态字段处于启用状态,即使未为其定义字段,也允许在文档上设置和保留属性。

在选项集config/mongoid.yml下进入allow_dynamic_fields: false。它应该已经存在但注释掉并设置为true。确保它说错了。