Redis缓存在模型触摸后不更新



下面是我在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