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

标签 ruby-on-rails ruby lazy-loading

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

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

根据延迟加载特性,上述查询将不会执行,而只会创建一个 Active Record Relation。只有当您调用 adult_users.first 或您对其进行一些其他操作时,才会执行实际查询。
但是在 Rails 控制台中,即使您点击 User.where('age > 18'),您也可以看到查询正在执行。
怎么会这样?

最佳答案

在控制台中,它会在检查 ActiveRecord::Relation

时执行查询

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

如果你输入

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

然后变量将不会被检查并且不会运行查询

关于ruby-on-rails - 如果启用了延迟加载,rails 控制台如何在查询时提供结果集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34160125/

相关文章:

html - 如何使用 HAML 在段落中间放置链接?

ruby-on-rails - Rails 关联未正确加载

ruby-on-rails - Rails 出了点问题……(菜鸟)

python - 带有惰性字典的 str.format()?

javascript - 延迟加载插件抛出 Uncaught ReferenceError

ruby-on-rails - rails : Paypal configuration file and figaro environment variables

ruby-on-rails - 如何在 rspec 中传递带有消息的对象?

Java 执行 Ruby 脚本时收到错误;终端没有

ruby-on-rails - 如何迭代 ActiveRecord 属性,包括 attr_accessor 方法

objective-c - IOS:来自 Json 的 LazyLoad 图像