我有一个循环,并根据远程记录更新我的记录。因此,我最终通过名为19
的两个字符串键选择symbol
个对象的某个子集。我想做的是减少Postgres调用以调用.all
一次,然后继续使用find_by_symbol
语法在需要时抓取它。
答案 0 :(得分:1)
或者你可以建立一个哈希查找并处理"缓存"自己。
Hash[Object.all.map{|object| [object.symbol, object]}]
答案 1 :(得分:0)
使用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
的结果并针对它运行方法,而不是每次都重新加载。