1

images私は自分のvehicleモデルで多対1の関係を持っています。いくつかのようなクエリを設定しましたVehicle.includes(:images).find(ids)。正しくは、これらには画像がないため、空の配列がロードされvehiclesています。ただし、Mongoサーバーに戻り、画像があるかどうかを確認しようとします。IDマップが有効になり、そのすべてがジャズになります。空でないアレイでは、積極的な読み込みが機能するようです。

空の配列が正しいことをMongoidに通知し、それらを再度ロードしないようにするにはどうすればよいですか?

4

1 に答える 1

0

これを解決する良い方法が見つかりませんでした。ID マップは空の配列を格納しないようで、空の配列を IdentityMap に手動で詰め込んだところ、期待どおりに機能しました。

他の誰かがこの質問をした場合の回避策は次のとおりです。

モデルにインデックスがあることを確認しvehicle_idimageすべての画像を別のクエリにロードして、関連する車両オブジェクトに貼り付けました。この方法で一度に 25 台を超える車両をロードすることは決してないため、クエリ数は 26 から 2 になりました。

かなりの量の要素をメモリにロードする場合、パフォーマンスが低下する可能性があります。

于 2012-10-29T23:59:31.027 に答える