0
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

我发现地址是嵌入人而不是公司..任何想法。

4

3 回答 3

1

If clone() doesn't work you could create a new Address record based on the attributes of the old Address. This will be a new object and should successfully save.

于 2011-03-12T10:12:55.837 回答
0

尝试克隆您的地址:

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

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

甚至嵌入的所有文档都是 _id ,因此如果您克隆它,则在第二种情况下它不是 new_record 。

于 2010-08-12T12:25:09.000 回答
0

这可能对你有帮助,

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

于 2013-03-01T13:05:35.930 回答