2012-11-30 97 views
0

我的車型有:Mongoid embeds_many構建嵌套對象兩次?

class Node 
    include Mongoid::Document 
end 

class PhysicalServer < Node 
    embeds_many :network_interfaces 
end 

class NetworkInterface 
    include Mongoid::Document 
    embedded_in :physical_server 
end 

如果我做的:

server.network_interfaces.build() 
server.save! 
當我檢查數據庫

,我會看到重複的ID 2 NetworkInterface的嵌入文檔。

但是,如果我做的:

server.network_interfaces.create() 

它會工作正常(僅1嵌入文檔創建)。

這是Mongoid中的錯誤,還是我的代碼有問題? 我正在使用Ruby1.9.3 + Rails 3.2.9 + Mongoid 3.0.13

回答

0

不太清楚問題是「尚未」,但我遇到同樣的問題,我暫時有一個解決方法。

通過在控制器的更新操作中強制執行新的查找,我能夠擺脫'$ pushAll',在每次調用時創建一個重複更新。我有一種感覺,它與Mongoid建立原子操作有關;使用一個新的對象只是刪除'構建'行動。

我創建了問題(希望使其能夠重新創建兩個失敗場景和解決方法:https://gist.github.com/jsmestad/d0103ba0197df9f4505b)要旨