gpt4 book ai didi

sql - Rails 中的延迟作用域

转载 作者:行者123 更新时间:2023-12-05 08:34:56 25 4
gpt4 key购买 nike

正如我们所知,范围在调用时开始加载。所以这个表达式

articles = Article.published
articles.newest

获取 2 个查询。是的,我们可以这样做

articles = Article.published.newest

但是如果我需要条件怎么办?如果 foo == bar 则继续链。

最佳答案

你错了。在您的示例中,两行:

articles = Article.published
articles.newest

这不会生成两个查询。您能够继续链接的原因是这些调用将返回一个 ActiveRecord::Relation,它只会在遍历时执行查询或选择几个其他方法调用,例如 count、sum 或其他聚合方法。

如果您从控制台查看它,就会发现每一行都在生成一个查询。这是因为在控制台中,每次评估后都会调用一个隐式的 inspect 调用,这将生成一个查询。

关于sql - Rails 中的延迟作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15175156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com