在mongoid中更新嵌入式文档的最佳方法

时间:2011-06-18 14:42:42

标签: ruby-on-rails mongodb mongoid

我将项目从mysql迁移到mongodb并遇到一些麻烦。

如何以ActiveRecord方式更新嵌入文档中的属性?有可能在mongoid?

class Template
    include Mongoid::Document
    include Mongoid::Versioning

    embedded_in :site, :inverse_of => :templates
end

class Site
  embeds_many :templates
end

例如:

site = Site.find(params[:current_site_id])
template = site.templates.find(params[:id])

template.update_attributes(params[:template])

我得到了:

Access to the collection for Template is not allowed since it is an embedded document, please access a collection from the root document.

好的,但是如何从根文档中做到这一点?

修改

看起来我在模板中使用的Mongoid :: Versioning会带来一些麻烦。我删除了包含的模块,一切正常。

1 个答案:

答案 0 :(得分:0)

有一个带有嵌入式文档的mongoid版本控制的pb,如果你使用偏执狂模式也是如此。 我建议为您的嵌入式文档停用这些选项,并在您真正需要时自行复制这些功能。

亚历