我可能在这里遗漏了一些非常简单的东西,但不明白是什么。
我正在尝试缓存一个简单的活动记录查询,但每次我触摸缓存时,它都会再次对数据库运行查询。
控制器代码:
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,但是任何时候我试图触摸产品(比如渲染它),我也会看到对数据库的活动记录调用。
我错过了什么?