2017-11-14 22 views
0

外部URLからJSONデータを取得してデータベースに保存するcronジョブを持っています。私は、最新のレーキタスク以降に変更された、新しいレコードだけを追加または更新するオプションを探しています。現時点では、古いデータを作成するだけです。RailsとJSONのデータは、更新されたか新しく更新されたかだけを返します。

のRakeタスク

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

find_or_create_by - https://apidock.com/rails/v4.0.2/ActiveRecord/Relation/find_or_create_by – Sajin

+0

Thanks Sajinを使用できます。それは正しい方向に私を導く。 – DollarChills

答えて

0

私はこれを達成するには、次の@Sajinへ

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 

感謝を。

関連する問題