2012-11-30 63 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)要旨