2010-08-12 61 views
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.But我發現它 嵌入公司。 有沒有人知道爲什麼?或者我不能在多個文檔中嵌入地址。

再次當我扭轉這樣

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

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

我發現地址是嵌入在人不在公司.. 任何想法。

回答

0

嘗試克隆你的地址:

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

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

甚至嵌入所有文檔都_id所以它不會在第二種情況下,如果你噸克隆它new_record。

+0

感謝的快速反應。當我嘗試Person.find(person_id).addresses它給了我地址。但是,在克隆地址對象之後嘗試使用Company.find(company_id).addresses時,它並沒有給我地址。當只做Person.find(person_id).addresses.first.addressable時,我應該獲取人員和公司對象。有什麼解決方案嗎? – kriysna 2010-08-13 03:03:37

1

如果clone()不起作用,您可以根據舊地址的屬性創建一個新的地址記錄。這將是一個新的對象,應該成功保存。

0

這可以幫助你,

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