我有两个模型 has_many 属于关系。
Scheme has_many navs
我需要获取只有最后一个导航值的所有方案。我有 10 个方案,每个方案都有大约 100k 导航,但我只需要最后一条记录,即当前值。
急切加载将加载所有导航
Scheme.all.includes(:navs)
如何在急切加载时应用条件以仅获取每个方案的最后一行导航。
更新日志
如果我跑
Scheme.includes(:current_nav).limit(3)
这些是 AR 执行的查询
SELECT `schemes`.* FROM `schemes` LIMIT 3
SELECT `navs`.* FROM `navs` WHERE `navs`.`schemeCode` IN ('D04', 'D01', 'D30') ORDER BY id DESC
第二个查询是如何工作的,它将获取 schemeCode 属于 list 的所有导航,并按 id DESC 对它们进行排序,但它将如何与特定方案准确关联。