2017-11-14 3 views
0

Ich habe einen beliebigen Cronjob, der JSON-Daten von einer externen URL erhält und in meiner Datenbank speichert. Ich suche nach einer Option, um nur neue Datensätze hinzuzufügen oder zu aktualisieren, die seit der letzten Rake-Aufgabe geändert wurden. Im Moment erstellt es nur über die alten Daten.Rails und JSON-Daten, überschreiben nur, wenn aktualisiert oder neu

Rake Aufgabe

namespace :properties do 
    desc "Save Properties from API to database" 
    task upload: :environment do 

    json = JSON.parse('{"Property":[{"id":"1","street":"123 Fake Street","town":"Someplace","postcode":"000000"}]}') 

    json['Property'].each do |data| 
     property = Property.create 
     property.id = data['id'] 
     property.street = data['street'] 
     property.town = data['town'] 
     property.postcode = data['postcode'] 
     property.save 
    end 

    end 
end 
+3

Sie können find_or_create_by - https://apidock.com/rails/v4.0.2/ActiveRecord/Relation/find_or_create_by – Sajin

+0

Dank Sajin verwenden. Es führt mich in die richtige Richtung. – DollarChills

Antwort

0

Um dies zu erreichen, habe ich:

json['Property'].each do |data| 
property = Property.find_or_create_by(id: data['id']) 
property.id = data['id'] 
property.street = data['street'] 
property.town = data['town'] 
property.postcode = data['postcode'] 
property.save 
end 

Dank @Sajin.

Verwandte Themen