首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在没有额外sql查询的情况下过滤活动记录关系?

在没有额外sql查询的情况下过滤活动记录关系?
EN

Stack Overflow用户
提问于 2013-10-24 02:48:03
回答 1查看 20.4K关注 0票数 31

如何在不执行其他查询的情况下过滤AR查询的结果?

例如:

代码语言:javascript
复制
u = User.where(name: "bob", age: [10, 20])
# 1st select query to db
u.class # ActiveRecord::Relation
tens = u.where(age: 10)
# 2nd select query to db

我不希望第二个查询调用db,而是根据u(第一个查询)中检索到的结果进行过滤。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-24 03:22:49

ActiveRecord:Relation仅在其元素被访问时查询db。因此,除非您编写u.firsttens.first之类的代码,否则您拥有的序列根本不会调用db。

这在Rails控制台中有一点不同,因为每个语句的结果都被打印到控制台,所以它每次都会执行查询。您可以通过在每条语句后面附加; 1来跳过打印。

除此之外,如果您仍然希望过滤第一个查询的结果:

代码语言:javascript
复制
u = User.where(name: "bob", age: [10, 20]) # no query at this point
u.class # ActiveRecord::Relation
u.first # query to db
u.class # Array

tens = u.select{|x| x.age == 10} # no query to db
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19549941

复制
相关文章

相似问题

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