我很难理解我们何时在 rails 活动记录中访问数据库以及我们何时构建查询。
users = User.where(org_id: 15) #db hit 1?
这会击中 db 吗?
users.where(is_suspended: false) #db hit 2?
使用完整的链接/博客会很有帮助。
我很难理解我们何时在 rails 活动记录中访问数据库以及我们何时构建查询。
users = User.where(org_id: 15) #db hit 1?
这会击中 db 吗?
users.where(is_suspended: false) #db hit 2?
使用完整的链接/博客会很有帮助。
除非您对它们进行操作,否则上述所有内容都不会真正影响数据库。
users = User.where(org_id: 15)
只创建一个表示查询的对象,如果您在控制台上运行该行,解释器将访问数据库,因为它会尝试呈现集合,但如果您在脚本中运行它,它不会运行实际的查询。
第二行也是如此,如果您users.where(....)
在控制台上运行,解释器将尝试呈现集合,以便它访问数据库,但在脚本中它不会运行查询,直到您实际使用它。
您可以检查服务器日志以更好地理解它。如果您在 Rails 应用程序中执行这两行,则不会看到任何查询,除非您执行类似users.each do |user| ....
orusers.first
或user.to_a
类似的操作,实际上需要运行查询。