最佳答案
是否有人知道一种方法来确定 Rails 关联是否已经被迫加载?
我的情况: 我有一个结果集,其中有时候一个关联渴望加载,有时候不是。如果它不是急切加载的,那么我想使用 ActiveRecord 的 find 来查找关联。如果它是急切加载的,我想使用检测。
例如,假设在我的条目模型中有一个 Shipping _ info 对象的“ has _ many”数组,然后:
如果项目是急切加载,最有效的加载是:
item.shipping_infos.detect { |si| si.region == "United States" }
如果项目没有立即加载,最有效的加载方式是:
item.shipping_infos.where(region: "United States").first
但是,除非我知道它是否渴望加载,否则我不知道调用哪些代码来高效地获取记录。如果我在第一个方法没有立即加载时使用它,那么我必须查找比必要的更多的 DB 记录。如果我使用第二个方法时,它是渴望加载的,那么我的渴望加载的对象将被忽略。