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关系对象.
| 归档时间: |
|
| 查看次数: |
4288 次 |
| 最近记录: |