Rails 3.2.6中的延迟加载

Hom*_*ith 17 activerecord ruby-on-rails

我在网上找到了几个资源,而不是做以下事情:

cars = Car.where(:colour => 'black')
Run Code Online (Sandbox Code Playgroud)

在您执行以下操作之前,不会执行查询:

cars.each {|c| puts c.name } 
Run Code Online (Sandbox Code Playgroud)

但是,在我的Rails 3.2.6项目中,当我在控制台中执行以下操作时:

User.where(:first_name => "John")
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

 User Load (1.2ms)  SELECT `users`.* FROM `users` WHERE `users`.`first_name` = 'John'
Run Code Online (Sandbox Code Playgroud)

那么,查询正在执行吗?

懒惰装载在哪里?或者我在这里遗漏了什么?

Fre*_*ung 34

控制台会调用inspect您键入的任何表达式的结果,以便它可以显示给您.inspect是触发查询加载的事情之一.如果你做了

x = User.where(:first_name => 'John'); false
Run Code Online (Sandbox Code Playgroud)

那么你应该看不到任何查询,因为这次控制台调用的是on false而不是Active Record关系对象.