2010-06-30 138 views
2

我有了一个分类模型,并与嵌入式docuement称为“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> 

任何人帮助我在这?因为我需要更深入地做到这一点。

回答

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 
+0

这是否实际工作?当将EmbeddedDocument嵌入到另一个EmbeddedDocument中时,我似乎遇到了任何问题。 – Vortico 2013-02-19 07:29:41