嵌入了很多文档

时间:2010-08-12 09:01:59

标签: mongoid

class Person
  include Mongoid::Document
  field :name
  embeds_many :addresses
end

class Company
  include Mongoid::Document
  field :name
  embeds_many :addresses
end

class Address
  include Mongoid::Document
  embedded_in :addressable, inverse_of :addresses
end

我试过这样的事情

company = Company.first
person = Person.first
address = Address.new

company.addresses << address
company.save
=>true

person.addresses << address
person.save
=>true

但我没有找到嵌入的地址。但我发现它确实存在 嵌入公司。 有谁知道为什么?或者我不能在多个文档中嵌入地址。

当我像这样颠倒时

person.addresses << address
person.save
=>true

company.addresses << address
company.save
=>true

我发现地址是在公司内部嵌入的。  有任何想法吗。

3 个答案:

答案 0 :(得分:1)

如果clone()不起作用,您可以根据旧地址的属性创建新的地址记录。这将是一个新对象,应该可以成功保存。

答案 1 :(得分:0)

尝试克隆您的地址:

person.addresses << address
person.save
=>true

company.addresses << address.clone
company.save
=>true

所有嵌入的文档都是_id所以如果你克隆它就不是new_record。

答案 2 :(得分:0)

这可能对你有帮助,

company.addresses.new.attributes = address.attributes 
company.save