有谁知道确定 Rails 关联是否已被急切加载的方法?
我的情况:我有一个结果集,有时其中一个关联是渴望加载的,有时不是。如果它不是预先加载的,那么我想使用 ActiveRecord 的查找来查找关联。如果它是急切加载的,我想使用检测。
例如,假设我的商品模型中有一个 shipping_info 对象的“has_many”数组。然后:
如果项目是预先加载的,最有效的加载是:
item.shipping_infos.detect { |si| si.region == "United States" }
如果项目不是急切加载的,最有效的加载是:
item.shipping_infos.where(region: "United States").first
但是除非我知道它是否被急切加载,否则我不知道调用哪个代码来有效地获取记录。如果我在没有急切加载的情况下使用第一种方法,那么我必须查找比必要更多的数据库记录。如果我在急切加载时使用第二种方法,那么我急切加载的对象将被忽略。