引用/嵌入文档

时间:2012-04-03 12:03:48

标签: ruby-on-rails mongoid mongomapper

一个简单的架构:

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

首先,我尝试使用Mongoid(我首选的ODM)但没有成功。 Mongoid的已知MixedRelation问题。

然后我尝试了与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

throws:NoMethodError:当你没想到它时,你有一个nil对象!

怎么了?

1 个答案:

答案 0 :(得分:0)

对于那个迟到的答案感到抱歉。

您所要做的就是创建用于存储所有ID的密钥,然后创建对该密钥的引用。这是一个小例子。

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