Mongoid embeds_many构建嵌套对象两次?

时间:2012-11-30 01:34:21

标签: mongoid embedded-resource

我的模特是:

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!

当我检查数据库时,我会看到2个带有重复ID的NetworkInterface嵌入文档。

但是,如果我这样做:

server.network_interfaces.create()

它将正常工作(只创建了1个嵌入式文档)。

它是Mongoid中的错误,还是我的代码有问题? 我正在使用Ruby1.9.3 + Rails 3.2.9 + Mongoid 3.0.13

1 个答案:

答案 0 :(得分:0)

不太确定问题是什么“尚未”,但我遇到了同样的问题,我暂时有一个解决方法。

通过在我的控制器的更新操作中执行强制新查找,我能够摆脱'$ pushAll'在每次更新调用时创建重复。我觉得它与Mongoid的原子操作积累有关;使用新对象只是删除“构建”操作。

我已经创建了一个问题的要点(希望能够重新创建失败的方案和解决方法:https://gist.github.com/jsmestad/d0103ba0197df9f4505b