我正在尝试以下方法:
Rails.cache.fetch(key, expires_in: 1.day) do
Some Protobuf Model
end
我得到了:
TypeError:没有为班级定义_dump_data 谷歌::的Protobuf :: RepeatedField
因为模型中有重复的字符串 怎么解决这个问题?
答案 0 :(得分:0)
Himberjack 已经解决了他的问题,但我会在这里添加我自己的(不同的)解决方案,以防对其他人有帮助。
当我缓存 protobuf 消息时,我使用 encode
将其转换为缓存字符串,并使用 decode
将其转换回 protobuf 消息。这些方法是从protobuf消息的类中调用的
def proto_cache_fetch(proto_class, key, options)
data = Rails.cache.fetch(key, options) do
proto_class.encode(yield)
end
proto_class.decode(data)
end
那么你可以这样做:
proto_cache_fetch(MyMessage, key, expires_in: 1.day) do
MyMessage.new(attr: 'value')
end