【问题标题】:how to put embedded document into an embedded document?如何将嵌入文档放入嵌入文档中?
【发布时间】:2011-03-10 08:01:41
【问题描述】:

我有一个表单,它有一个类别模型和一个名为“FieldModule”的嵌入文档,其中嵌入了一个名为“SubFieldModule”的文档

例如

class Category

  include MongoMapper::Document  
  key :name, String 
  many :field_modules
end

class FieldModule

  include MongoMapper::EmbeddedDocument  
  key :name, String 
  many :sub_field_modules  
end

class SubFieldModule

  include MongoMapper::EmbeddedDocument
  key :name, String  
end

在我的控制器中,我编辑了我拥有的操作:

@category = Category.find(params[:id])

3.times do
  @category.field_modules << FieldModule.new()
end

为该类别设置 3 个 FieldModule。

我希望能够像这样对每个 FieldModules SubFieldModules 做同样的事情

@category.field_modules.each do |mf| 
  mf << SubFieldModule.new()
end

但它不起作用。

我得到错误:

NoMethodError in Sub categoriesController#edit

undefined method `<<' for #<FieldModule name: nil, _id: $oid4c2b9f594248ce19f000011b>

有人帮我解决这个问题吗?因为我需要更深入地做同样的事情。

【问题讨论】:

    标签: ruby-on-rails ruby mongodb mongomapper


    【解决方案1】:

    试试这个:

    @cat = Category.new(:name => "Blah")
    
    3.times do
      @cat.field_modules << FieldModule.new()
    end
    
    @cat.field_modules.each do |mf|
      mf.sub_field_modules << SubFieldModule.new()
    end
    

    【讨论】:

    • 这真的有效吗?将 EmbeddedDocument 嵌入到另一个 EmbeddedDocument 时,我似乎都遇到了问题。
    猜你喜欢
    • 1970-01-01
    • 2011-09-01
    • 2015-01-26
    • 2018-08-21
    • 2012-05-11
    • 2011-08-19
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多