Mel*_*orn 1 sql activerecord scope ruby-on-rails
如我们所知,范围在调用时开始加载.所以这个表达
articles = Article.published
articles.newest
Run Code Online (Sandbox Code Playgroud)
获得2个查询.是的,我们可以做到这一点
articles = Article.published.newest
Run Code Online (Sandbox Code Playgroud)
但如果我需要条件怎么办?如果foo == bar比继续链.
你错了.在您的示例中,两行:
articles = Article.published
articles.newest
Run Code Online (Sandbox Code Playgroud)
这不会生成两个查询.你能够继续链的原因是,这些调用将返回ActiveRecord::Relation
,只将在穿越或选择其他一些方法调用执行查询,如数量,金额,或其他聚合方法.
如果您是从控制台看这个,它会出现,每一行都生成查询.这是因为在控制台中,有一个隐含的inspect
通话每次评估之后被调用,这将生成一个查询.
归档时间: |
|
查看次数: |
723 次 |
最近记录: |