【发布时间】:2014-10-18 14:01:46
【问题描述】:
我有两个模型,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 对它们进行排序,但是它将如何与特定方案准确关联。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 associations eager-loading queryinterface