Кто-нибудь знает, как определить, была ли загружена ассоциация Rails?
Моя ситуация: у меня есть результирующий набор, где иногда одна из ассоциаций загружается, а иногда и нет. Если он не загружен, я хочу найти ассоциации, используя ActiveRecord find. Если он загружен, я хочу использовать функцию обнаружения.
Например, скажем, что у меня есть массив has_many объектов shipping_info в моей модели товаров. Тогда:
Если элемент загружен, наиболее эффективная загрузка:
item.shipping_infos.detect { |si| si.region == "United States" }
Если элемент не загружен, наиболее эффективная загрузка:
item.shipping_infos.where(region: "United States").first
Но если я не знаю, загружен ли он, я не знаю, какой код вызывать, чтобы эффективно записывать запись. Если я использую первый метод, когда он не загружается, тогда мне нужно искать больше записей БД, чем это необходимо. И если я использую второй метод, когда он был загружен, тогда мои загруженные объекты игнорируются.