gpt4 book ai didi

ruby-on-rails - Rails 缓存不返回对象,而是字符串

转载 作者:IT王子 更新时间:2023-10-29 06:15:03 26 4
gpt4 key购买 nike

我正在使用redis作为缓存存储,我想缓存公共(public)数据

@links = Rails.cache.fetch "FriendsLinks" do
Link.where(category_id: 0)
end

但是从 Rails.cache.fetch 返回的数据是一个 String,而不是 List 对象的数组。

我必须从 redis 中删除缓存,然后下一个请求才能工作。但很多时候,它会再次破裂。

编辑:它只发生在开发环境

最佳答案

我找到了问题。

问题是当从 redis/memcache 中检索数据时,相关的模型还没有被加载。所以 ruby​​ 不能执行 unmarshal。

简单的解决办法就是设置

config.cache_classes = true

缺点是当您更改代码时必须重新启动您的应用。

还有一种就是把相关的Class放在Rails.cache之前,比如

Link
@links = Rails.cache.fetch "FriendsLinks" do
Link.where(category_id: 0)
end

或者创建一个初始化器并将其放在config/initializers下

if Rails.env == "development"
Dir.glob("#{Rails.root}/app/models/**/*.rb") do |model_name|
require_dependency model_name
end
end

关于ruby-on-rails - Rails 缓存不返回对象,而是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24226413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com