2012-04-03 2 views
0

один простой схемы:REFERENCING/Встраивание Документы

Company embeds (many) Departments 
Company/Department references (many) Employees 

Сначала я попытался это с Mongoid (мой любимый ODM) не имели успеха. Известный выпуск MixedRelation для Mongoid.

Тогда я попытался простой происходит некорректно связь с MongoMapper:

c = Company.first 
d = Department.first 
e = Employee.first 

c.departments << d 
c.save 

до сих пор так хорошо, но ...

c.employees << e 
or 
d.employees << e 
or 
c.departments.first.employees 

бросает: NoMethodError: У вас есть ноль объект, когда вы Ждут» Ожидайте!

В чем проблема?

+0

Хорошо, ребята, я сделал это. Я просто забыл бросить employee_ids типа Array – David

+0

@David, не могли бы вы разместить свое решение в качестве ответа на свой вопрос и принять его? Это поможет другим, которые ищут то же самое, найти правильный ответ. – theTRON

ответ

0

Извините за это последнее время.

Все, что вам нужно сделать, это создать ключ для хранения всех идентификаторов и создать ссылку на этот ключ. Вот небольшой пример.

class Department 
    include MongoMapper::EmbeddedDocument 
    ... 
    key :contact_ids, Array 
    ... 
    many :contacts, :in => :contact_ids 
end 
Смежные вопросы