2016-04-25 8 views
0

私は私のRailsのDB絶えず(1時間ごと)に、外部ソースからデータベースを更新する方法をどのような方法があるかどうかお願いしたいと思い絶えずRailsは私がしようとしていた...(外部値)

をDBを更新しますそれを行うには、私はそれを行うとき、私のDBは重複+新しいファイルを追加したので、私はちょうど新しい値を追加することができますifステートメントはどこですか?

  • 私はその後、私は私のRailsのDBにそれを保存し、ビューに戻ってるのBitbucket(コミット)
  • からDB(JSON)を引っ張っています。
  • 私はその使用のために試しましたwhenever gem。

bitbucket.rb

class Bitbucket < ActiveRecord::Base 
    def self.savedata 
    require 'bitbucket_rest_api' 
    bitbucket = BitBucket.new login:'...', password:'...' 
    repo = bitbucket.repos.commits.list '...', '...' 
    repo["values"].each do |r| 
     create(
     name: r["author"]["user"]["display_name"], 
     message: r["message"], 
     date: r["date"] 
    ) 
    end 
    end 
end 

私はDBに保存するために、その後Bitbucket.savedata Railsのコンソールで最初Bitbucket.connectionを実行する必要があります。

ありがとうございました。

答えて

1

私が正しく理解している場合、1時間ごとにbitbucketからデータを取り出し、新しい '値'でデータベースを更新したいと考えています。その場合、既にデータベースにエントリがあるかどうかを知る方法はあなた次第です。例えば

あなたが求めることができる:

author_name = r["author"]["user"]["display_name"] 
message = r["message"] 
date = r["date"] 

unless exists?(name: author_name, message: message, date: date) 
    create(name: author_name, message: message, data: date) 
end 

独は 'が存在する?': http://apidock.com/rails/ActiveRecord/Base/exists%3F/class

を別の方法としては、 'first_or_create' を使用できます。

http://apidock.com/rails/v3.2.1/ActiveRecord/Relation/first_or_create

+0

ニース1を!本当にありがとう..コードが更新されたので、私は新しいコミットを作成し、それをテストするつもりです。 – liborza

+0

それは素晴らしい作品です!もう一度ありがとう。 – liborza

関連する問題