我遇到的情况是,对缓存的ActiveRecord对象的每个请求都会导致缓存未命中。我正在尝试缓存当前用户的权限结构:
my_permissions = Rails.cache.fetch("#{self.id}.permissions") do
self.permissions.all
end
我发现每个页面请求都在查询数据库以获取我的权限。如果我将代码更改为任意的
my_permissions = Rails.cache.fetch("#{self.id}.permissions") do
"I have no permissions"
end
这将正确地存在于缓存中。我可以证明这一点,因为如果我将任意行更改回我的ActiveRecord调用,它将因缓存对象错误而继续出错。我还检查了创建的缓存文件,它正确地存储为两个值,我可以看到看起来像我的权限对象,但它继续命中数据库而不是缓存。我错过了什么?