Ruby on rails 在ActiveRecord中是否有一种缓存“.all”的方法,以便“.find\u by”可以使用它?

Ruby on rails 在ActiveRecord中是否有一种缓存“.all”的方法,以便“.find\u by”可以使用它?,ruby-on-rails,ruby,postgresql,activerecord,Ruby On Rails,Ruby,Postgresql,Activerecord,我有一个循环,它根据远程记录遍历并更新我的记录。因此,我最终通过一个名为symbol的双字符字符串键来选择19对象的子集。我想做的是减少Postgres调用,以调用.all一次,然后在需要时继续使用按符号查找语法来获取它。或者,您可以自己构建哈希查找并处理“缓存” Hash[Object.all.map{| Object |[Object.symbol,Object]}]使用all获取数据后,它将成为一个Ruby对象,而不是一个作用域,因此需要使用Enumerable中的方法来获取它: Exam

我有一个循环,它根据远程记录遍历并更新我的记录。因此,我最终通过一个名为
symbol
的双字符字符串键来选择
19
对象的子集。我想做的是减少Postgres调用,以调用
.all
一次,然后在需要时继续使用
按符号查找
语法来获取它。

或者,您可以自己构建哈希查找并处理“缓存”


Hash[Object.all.map{| Object |[Object.symbol,Object]}]
使用
all
获取数据后,它将成为一个Ruby对象,而不是一个作用域,因此需要使用Enumerable中的方法来获取它:

Example.all.find { |r| r.symbol == 'example' }
这类似于:

Example.find_by(symbol: 'example')
同样地:

# Ruby Array
Example.all.select(symbol: 'example')

# ActiveRecord scope
Example.where(symbol: 'example')
显然,您可以缓存
Example.all的结果,并对其运行方法,而不是每次重新加载