下面是我在ProductCategory模型中的代码:
has_many :products
def products_count
Rails.cache.fetch([cache_key, __method__]) do
products.count
end
end
Product model:
belongs_to :product_category, touch: true
一旦我创建了一个新产品,我可以从日志中看到updated_at字段被更新:
ProductCategory Update (2.6ms) Update "product_categories"集"updated_at"= $1 WHERE "product_categories"; "= 2美元[["updated_at","2021-08-04 15:34:55.520408",["id"7]] (1.7 ms)提交
:
ProductCategory.find(7).products_count // returns 0
ProductCategory.find(7).products.count // returns 1
如果我执行Rails.cache.clear结果匹配,所以我猜Redis不再生缓存触摸后?
检查cache_key的值,我意识到它不包含时间戳值:
product_categories/7
我在环境文件中添加了以下行:
config.active_record.cache_versioning = false
和cache_key值现在是正确的,并正常工作
product_categories/7 - 20210805073701479752