【发布时间】:2012-07-27 17:17:45
【问题描述】:
我可能在这里遗漏了一些非常简单的东西,但不明白是什么。
我正在尝试缓存一个简单的活动记录查询,但每次我触摸缓存时,它都会再次针对数据库运行查询。
控制器代码:
products = Rails.cache.read("search_results")
if products
render :text => products[0].id
else
products = Product.where('name LIKE ?", 'product_name?')
Rails.cache.write("search_results", products)
end
我可以看到,在我的第二次调用中,我到达了 if 块,而不是 else,但是任何时候我试图触摸产品(比如渲染它),我也会看到一个对 DB 的活动记录调用。
我错过了什么?
【问题讨论】:
-
不是答案,但考虑使用
fetch而不是自己进行读写操作。
标签: ruby-on-rails ruby caching activerecord