3

私はモンゴイドの関係を理解し​​ようとしていますが、次のことを乗り越えることができません:

class Band
  include Mongoid::Document
  embeds_many :photos
end

class Photo
  include Mongoid::Document
  embedded_in :Band
end

上記のコードでは、Band にembed_many phtos を指示すると、Band 内に完全な写真データが保存されます。しかし、 Photo クラス内に embedded_in を配置する必要は何ですか? Photo に embedded_in を入れないと自動的にポリモーフィックにならないのでしょうか?

また、クエリはPhoto.allバンド内に埋め込まれた写真を取得しますか? はいの場合、これが embedded_in の理由ですか? 1 つのクラスに複数の embedded_in を使用できますか?

4

1 に答える 1

5

写真が埋め込まれているバンドにアクセスできるようembedded_inに、クラスにメソッドを追加するには呼び出しが必要です。使用するのとPhoto同じように、外部キーは. また、写真が永続化されているかどうかを確認するメソッドなども追加します。はい、1 つのクラスに対して複数のクラスを使用できますhas_manybelongs_tobelongs_toembedded_in

Photo.all他のクラスに埋め込まれている写真は表示されません。通常、別のモデルを介してのみモデルにアクセスする場合は、それを埋め込みます。外部キーとの関係を使用する場合、データベースへの別のラウンドトリップを行うよりも、ドキュメント全体を一度に取得する方が安価です。したがって、次のようなものが必要なPhoto.all場合は、埋め込まないでくださいPhoto

于 2013-03-25T18:39:48.320 に答える