如何将嵌入式文档放入嵌入式文档?

时间:2010-06-30 19:50:27

标签: ruby-on-rails ruby mongodb mongomapper

我有一个包含类别模型的表单,并且嵌入了名为“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 个答案:

答案 0 :(得分: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