如果启用了延迟加载,rails控制台如何在查询时提供结果集?

问题描述 投票:0回答:1

我有一个数据库表users。我正在尝试查询数据库以获取年龄大于18的所有用户。

adult_users = User.where('age > 18')

根据延迟加载功能,将不会执行上述查询,而只是创建一个活动记录关系。只有当您调用adult_users.first或者使用它执行某些其他操作时,才会执行实际查询。 但是在rails控制台中,即使你点击User.where('age > 18'),你也可以看到查询正在执行。 怎么会发生这种情况?

ruby-on-rails ruby lazy-loading
1个回答
3
投票

在控制台中,它会在检查ActiveRecord::Relation时执行查询

如果启用了日志记录,您甚至可以看到User Load条目。

如果你输入

adult_users = User.where('age > 18'); nil

那么变量将不会被检查,也不会运行查询

© www.soinside.com 2019 - 2024. All rights reserved.