gpt4 book ai didi

ruby-on-rails - 这会每次都命中数据库吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:50:53 25 4
gpt4 key购买 nike

如果我有:

config/initializers/foobar.rb 

它有:

$foos = User.where(:foo => true).pluck(:id)

在我的应用程序中,当我调用 $foo 时,它是否每次都命中数据库?

或者 $foo 只在服务器启动时访问数据库?

最佳答案

您正在存储范围(即一组条件)。然而,该范围将缓存它已加载的内容,因此(例如)$foos.each {|user| ...} 只会在第一次使用时(不是分配时)执行一次查询。

有些操作总是会触发查询,例如 $foos.count 总是会执行 select count(*)... 而其他操作则取决于是否范围已加载。

最后,对该范围的进一步改进也会影响数据库,例如

$foos.order('blah').first

每次使用都会触发一个新的查询。应该很容易看出是否发生了这种情况,但在 irb 中进行测试时要小心:irb 调用检查表达式的结果,这会导致加载作用域。

关于ruby-on-rails - 这会每次都命中数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13288812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com