как поместить встроенный документ во встроенный документ? - PullRequest
2 голосов
/ 30 июня 2010

У меня есть форма с моделью категории, в которую встроен документ с именем «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 модуля FieldModules для категории.

Я хочу иметь возможность делать то же самое для каждого модуля SubFieldModules FieldModules, например:

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

но это не работает.

я получаю сообщение об ошибке:

NoMethodError in Sub categoriesController#edit

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

Кто-нибудь мне поможет?тогда мне нужно подняться на один уровень глубже, делая то же самое.

1 Ответ

1 голос
/ 03 июля 2010

Попробуйте это:

@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
...