Railsアソシエーションが熱心にロードされているかどうかを判断する方法を知っている人はいますか?
私の状況:アソシエーションの1つが熱心にロードされる場合と、ロードされない場合がある結果セットがあります。熱心にロードされていない場合は、ActiveRecordの検索を使用して関連付けを検索したいと思います。熱心にロードされている場合は、detectを使用したいと思います。
たとえば、アイテムモデルにshipping_infoオブジェクトの「has_many」配列があるとします。それで:
アイテムが熱心にロードされる場合、最も効率的なロードは次のとおりです。
item.shipping_infos.detect { |si| si.region == "United States" }
アイテムが熱心にロードされていない場合、最も効率的なロードは次のとおりです。
item.shipping_infos.where(region: "United States").first
しかし、それが熱心にロードされているかどうかがわからない限り、レコードを効率的に取得するためにどのコードを呼び出すべきかわかりません。熱心にロードされていないときに最初の方法を使用すると、必要以上に多くのDBレコードを検索する必要があります。また、熱心にロードされたときに2番目のメソッドを使用すると、熱心にロードされたオブジェクトは無視されます。