gpt4 book ai didi

mysql - Rails 查询执行 2 个查询

转载 作者:行者123 更新时间:2023-11-29 04:38:27 26 4
gpt4 key购买 nike

我有一个简单的 Rails 查询,例如

a = A.where(type: 'user')
if a.count > 1
#Log Information
end
return a

Rails 执行延迟加载,除非对结果集执行某些操作,否则它不会查询数据库。这是一个很好的行为。但在我的例子中,rails 最终执行了 2 个查询,因为我在操作 a

之前调用了 a.count
SELECT COUNT(*) FROM `a` WHERE `a`.`type` = 'user';
SELECT `a`.* FROM `a` WHERE `a`.`type` = 'user';

有什么方法可以让 Rails 立即执行查询,以便仅执行第二个查询并从数据集中返回计数。

最佳答案

您可以将结果强制放入一个数组中。我认为 to_a 会为此工作,但是 entries 是表达该意图的更清晰的方式,因为它的工作是迭代 Enumerable 中的项目> 并返回枚举结果的数组。

a = A.where(type: 'user').entries
if a.count > 1
#Log Information
end
return a

关于mysql - Rails 查询执行 2 个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35534167/

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