首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自ActiveRecordRelation的独特关联

来自ActiveRecordRelation的独特关联
EN

Stack Overflow用户
提问于 2013-12-14 23:19:32
回答 1查看 54关注 0票数 0

我有一个has-many PeopleProject模型。

给定一个包含大量ProjectsActiveRecordRelation,如何有效地获取一个包含与所有项目关联的所有唯一PeopleActiveRecordRelation

基本上,我在寻找一种有效的方法:

代码语言:javascript
复制
@people = @projects.flat_map {|project| project.people}.uniq
EN

回答 1

Stack Overflow用户

发布于 2013-12-15 00:45:56

急切加载似乎不能在has_many中正常工作,或者至少不够聪明。Rails将立即加载关联,但当您在特定实例上调用该关系时,会求助于查询。

示例(非实际查询):

代码语言:javascript
复制
@articles = Article.includes(:comments)
#> Article Load: SELECT * from articles
#> Comment Load: SELECT * from comments where article_id IN(1,2,3,4)

@articles.first.comments
#> Comment Load: SELECT * from comments where article_id IN(1)

@articles.first.comments中,我希望看到Comment Load (Cache)或类似的内容,因为该注释已经加载。

可能有一个更好的替代方案,但我会简单地执行一个自定义查询,例如:

@people = People.where("project_id IN(?)", @projects.map(&:id))

Rails 4:

@people = People.where(project_id: @projects.map(&:id))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20584945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档