我正在尝试在Rails应用程序中对google翻译API进行简单的低级缓存,但是缓存无法正常工作:
1)如果为cache_key = ['google_translate', 'first']
,则笔译内容为“第一”且正确。
2)如果cache_key = ['google_translate', 'second']
的翻译内容为“第二”,则是正确的。
3)如果再次cache_key = ['google_translate', 'first']
,当我应该期待“第一”时,笔译内容为(空)
我可以确认在前两个查询中调用了API,尽管不正确,但在第三个查询中未按预期调用API。
这是我的代码:
class Model < ApplicationRecord
def self.query_model(model_uid, text)
cache_key = [model_uid, text]
translate = Google::Cloud::Translate.new
Rails.cache.fetch(cache_key) do
translatedcontent = translate.translate text, from: 'en', to: "zh-cn"
end
return translatedcontent
end
end
答案 0 :(得分:0)
已解决,这似乎很明显,但似乎大多数Rails缓存教程/示例都没有显示以这种方式使用缓存。
class Model < ApplicationRecord
def self.query_model(model_uid, text)
cache_key = [model_uid, text]
translate = Google::Cloud::Translate.new
translatedcontent = Rails.cache.fetch(cache_key) do
translatedcontent = translate.translate text, from: 'en', to: "zh-cn"
end
return translatedcontent
end
end