【问题标题】:Mongoid update attributes : how not to insert when field names don't already exist in the collectionMongoid 更新属性:当集合中不存在字段名称时如何不插入
【发布时间】:2012-08-15 17:56:03
【问题描述】:

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

我遇到的问题是这样的:

假设我的收藏有以下字段:

{“姓名”:“foo”,“电子邮件”:“酒吧”}

这是场景

如果我这样做:

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

然后我这样做:

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

上面这行代码更新了mongodb中的记录,同时增加了一个新字段到文档中。

如何将 update_attributes 方法与不允许插入尚不存在的字段的验证一起使用

【问题讨论】:

    标签: ruby-on-rails mongoid


    【解决方案1】:

    听起来你想要的是在 mongoid 配置文件中将 allow_dynamic_fields 设置为 false。动态字段默认开启,即使没有为属性定义字段,也可以设置属性并将其保留在文档中。

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

    【讨论】:

    • 谢谢。这正是我想要做的。和 allow_dynamic_fields: false 工作。默认情况下,它似乎设置为 true。
    猜你喜欢
    • 2016-08-28
    • 1970-01-01
    • 2022-11-02
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2017-07-12
    相关资源
    最近更新 更多