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
我发现地址是在公司内部嵌入的。 有任何想法吗。
答案 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