Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails如何在ActiveRecord模型中缓存来自外部源的部分数据_Ruby On Rails_Ruby_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails RubyonRails如何在ActiveRecord模型中缓存来自外部源的部分数据

Ruby on rails RubyonRails如何在ActiveRecord模型中缓存来自外部源的部分数据,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,这是我的第一个问题,所以如果你觉得我有任何重大/次要失礼,请让我知道。谢谢 版本: Ruby-2.5.3 轨道-5.0.3 我有一个现有的ActiveRecord数据模型。数据模型中的字段变得多余,无法手动更新,因为API中有可用的信息。我想从外部API检索、填充和缓存其中的一些字段 由于大多数实体都使用数据模型CRUD,所以我需要修改数据模型以始终检查缓存的数据,如果TTL失效,则从API重新提取 Rails或Ruby中是否存在允许我这样做的机制 似乎有用于更新的ActiveRecord验

这是我的第一个问题,所以如果你觉得我有任何重大/次要失礼,请让我知道。谢谢

版本:

  • Ruby-2.5.3
  • 轨道-5.0.3
我有一个现有的ActiveRecord数据模型。数据模型中的字段变得多余,无法手动更新,因为API中有可用的信息。我想从外部API检索、填充和缓存其中的一些字段

由于大多数实体都使用数据模型CRUD,所以我需要修改数据模型以始终检查缓存的数据,如果TTL失效,则从API重新提取

Rails或Ruby中是否存在允许我这样做的机制

似乎有用于更新的ActiveRecord验证钩子,但没有可用于检索的钩子

我对RubyonRails还是一个新手,搜索结果并不理想


非常感谢您提供的任何帮助

我可以使用
after\u find
钩子来预填充结果,并在更新时间超过某个可配置的时间段后保存它。不幸的是,如果我要对每个结果(cough,所有结果)进行API调用,那么这并不能很好地扩展

我最终创建了一个定期运行的rake任务,该任务将定期调用外部API来更新部分记录结果


这似乎不符合我所寻找的客观答案,所以我不会将其作为结果。感谢所有查看并考虑回答此问题的人。

您是否阅读了本指南?我想你可以用低级的cachingHi@arieljuod来做类似的事情,非常感谢。我读过了,谢谢!不幸的是,这将不起作用,因为缓存数据库中已有的资源,但没有提供从第三方API缓存资源的机会。