0

私のモデルは次のとおりです。

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 +Mongoid3.0.13を使用しています

4

1 に答える 1

0

問題が「まだ」何であるかはよくわかりませんが、当分の間回避策がある同じ問題を抱えていました。

コントローラーの update アクションで強制的に新しいルックアップを実行することで、update の呼び出しごとに重複を作成する「$pushAll」を取り除くことができました。私は、それが Mongoid のアトミック操作の構築と関係があると感じています。新しいオブジェクトを使用すると、単に「ビルド」アクションが削除されます。

問題の要点を作成しました (うまくいけば、失敗したシナリオと回避策の両方を再作成できるようになります: https://gist.github.com/jsmestad/d0103ba0197df9f4505b )

于 2013-02-22T23:33:42.703 に答える