2012-04-03 9 views
0

ein einfaches Schema:Referenzierung/Einbetten Dokumente

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

Zuerst habe ich versucht, diese mit Mongoid (meine bevorzugte ODM) ohne Erfolg. Bekannte MixedRelation-Problem von Mongoid.

Dann habe ich versucht, die follwoing einfache Verbindung mit MongoMapper:

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

c.departments << d 
c.save 

so weit so gut, aber ...

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

wirft: NoMethodError: Sie haben eine Null-Objekt, wenn Sie ‚didn t erwarte es!

was ist falsch?

+0

Ok Leute, ich habe es getan. Ich habe einfach vergessen, die employee_ids vom Typ Array – David

+0

@David zu übertragen. Könnten Sie Ihre Lösung als Antwort auf Ihre eigene Frage posten und akzeptieren? Es hilft anderen, die nach dem gleichen suchen, die richtige Antwort zu finden. – theTRON

Antwort

0

Sorry für die späte Antwort.

Alles, was Sie tun müssen, ist einen Schlüssel zu erstellen, um alle IDs zu speichern und dann einen Verweis auf diesen Schlüssel zu erstellen. Hier ist ein kleines Beispiel.

class Department 
    include MongoMapper::EmbeddedDocument 
    ... 
    key :contact_ids, Array 
    ... 
    many :contacts, :in => :contact_ids 
end