Gan*_*hat 2 ruby lazy-loading ruby-on-rails
我有一个数据库表users。我正在尝试查询数据库以获取所有年龄大于 18 的用户。
adult_users = User.where('age > 18')
Run Code Online (Sandbox Code Playgroud)
根据延迟加载功能,不会执行上述查询,而只会创建一个 Active Record Relation。实际的查询只有在您调用adult_users.first或使用它进行其他一些操作时才会执行。
但是在 rails 控制台中,即使您点击User.where('age > 18'),您也可以看到查询正在执行。
这怎么会发生?
In console it does execute the query while inspecting the ActiveRecord::Relation
If logging is enabled you can even see the User Load entry.
If you type
adult_users = User.where('age > 18'); nil
Run Code Online (Sandbox Code Playgroud)
那么变量将不会被检查,也不会运行查询
| 归档时间: |
|
| 查看次数: |
719 次 |
| 最近记录: |