【问题标题】:Saving JSON data to database at a certain time在特定时间将 JSON 数据保存到数据库
【发布时间】:2017-11-09 06:28:25
【问题描述】:

我希望每天在特定时间(晚上 10 点)从外部 URL 截断并保存 JSON 数据。该 URL 需要一个我可以访问的登录名,但不确定如何最好地实现它。

JSON 的结构如下:

{
  "Region": [{"id":"1","region":"South"}],
  "Agent": [{"id":"1","first_name":"Tim","last_name":"Jones"}]
}

我已经创建了模型的RegionAgent 来存储数据,匹配上面的字段。

这是我目前在Region 模型中所拥有的

json = JSON.parse('http://....')

json['Region'].each do |data|
  Region.create(
    id: data['id'],
    region: data['region']
  )

我的问题是:

  • 这可以通过模型实现吗,还是我必须将它放在 控制器
  • 如何在特定时间截断和保存?

【问题讨论】:

    标签: ruby-on-rails json ruby-on-rails-5


    【解决方案1】:
    1. 要从外部 url 获取数据,您需要使用 http 客户端,例如 Faraday 或 Httparty

    2. 获得 json 数据后,您可以根据需要对其进行解析和操作。

    3. 要在每天晚上 10 点自动执行,您需要使用 ActiveJob 或 Sidekiq 之类的工具安排后台作业。

    【讨论】:

    • 感谢@EJ2015 提供的信息。使用该模型执行此操作是最佳实践吗?当我用 JSON 数据替换 URL 时,我上面的内容似乎没有保存。
    • 通常您所描述的将在模型或工作人员类中实现(例如使用 Sidekiq)。如果您未能将数据保存在 db 中,请检查错误(确保您保存的是正确的数据类型并且它们是有效的)。
    猜你喜欢
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 2014-06-18
    • 2014-03-30
    • 1970-01-01
    相关资源
    最近更新 更多