2017-11-09 6 views
0

Ich möchte JSON-Daten von einer externen URL zu einer bestimmten Zeit (22.00 Uhr) jeden Tag abschneiden und speichern. Die URL erfordert eine Anmeldung, auf die ich Zugriff habe, bin mir aber nicht sicher, wie dies am besten umgesetzt werden kann.JSON-Daten zu einer bestimmten Zeit in der Datenbank speichern

Die JSON als solche strukturiert:

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

I geschaffen das Modell Region und Agent in die Daten zu speichern, über die Felder entsprechen.

Das ist, was ich bisher in Region Modell haben

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

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

Meine Fragen sind:

  • Ist dies möglich, über das Modell, oder muss ich dies in einem Controller zu setzen haben
  • Wie gehe ich beim Abschneiden und Speichern zu einem bestimmten Zeitpunkt vor?

Antwort

0
  1. Um die Daten von einer externen URL zu erhalten, müssen Sie einen HTTP-Client wie Faraday verwenden oder Httparty

  2. Sobald Sie Ihre json Daten einsehen können Sie es jedoch analysieren und manipulieren Sie wollen.

  3. Um es jeden Tag um 10:00 Uhr zu automatisieren, müssen Sie einen Hintergrundjob mit etwas wie ActiveJob oder Sidekiq planen.

+0

Danke für die Informationen @ EJ2015. Ist es die beste Vorgehensweise, das Modell dafür zu verwenden? Was ich oben habe, scheint nicht zu speichern, wenn ich die URL durch JSON-Daten ersetze. – DollarChills

+0

Normalerweise würde das, was Sie beschrieben haben, in einem Modell oder einer Arbeiterklasse (z. B. mit Sidekiq) implementiert werden. Wenn Sie die Daten nicht in db speichern können, überprüfen Sie die Fehler (stellen Sie sicher, dass Sie den richtigen Datentyp speichern und sie gültig sind). – EJ2015

Verwandte Themen