今後の参考のために、私はこれに自分で答えています。誰かがこれを行う公式で文書化された方法を持っている場合は、私に知らせてください。
Mongoid のドキュメントを 1 時間ほどグーグル検索して読んだ (そして再読した) 後、私は Mongoid のソース コードに目を向けました。ちょっとした検索と当て推量で、@base
とそのアクセサ メソッドにたどり着きましたbase
。
embeds_many :es do
def m
base
end
end
そして、あなたはこれを言うことができます:
d = D.find(id)
d.es.m.id == id # true
base
文書化されていますが、文書化は使用して定義されており、呼び出しattr_reader :base
から生成された文書attr_reader
はあまり役に立たないため、そこにあるだけです。base
アソシエーションとも連携しhas_many
ます。
どうやってこれを理解したのですか?拡張機能に関するドキュメントには@target
、例として次のように記載されています。
embeds_many :addresses do
#...
def chinese
@target.select { |address| address.country == "China"}
end
end
@target
探している@target
のは埋め込みドキュメント自体の配列ではありませんが、その配列の中身が必要です。for について少し調べて@target
みたところ@base
(および対応するattr_reader :base
呼び出し) にたどり着き、簡単な実験でbase
それが探していたものであることが確認されました。