我有一个数据库表users
。我正在尝试查询数据库以获取年龄大于18的所有用户。
adult_users = User.where('age > 18')
根据延迟加载功能,将不会执行上述查询,而只是创建一个活动记录关系。只有当您调用adult_users.first
或者使用它执行某些其他操作时,才会执行实际查询。
但是在rails控制台中,即使你点击User.where('age > 18')
,你也可以看到查询正在执行。
怎么会发生这种情况?
在控制台中,它会在检查ActiveRecord::Relation
时执行查询
如果启用了日志记录,您甚至可以看到User Load
条目。
如果你输入
adult_users = User.where('age > 18'); nil
那么变量将不会被检查,也不会运行查询