Rails低级缓存Google Translate API不起作用

时间:2019-01-15 11:27:29

标签: ruby-on-rails api caching

我正在尝试在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

1 个答案:

答案 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