2016-04-25 31 views
0

我想问一下,如果有任何的方式如何更新从外部源数据库到我的Rails的DB不断(每隔1小时)...Rails的更新DB不断(外在价值)

我试着要做到这一点,但当我这样做时,我的数据库被复制+添加新文件,所以有什么if声明我可以在哪里添加新值?

  • 我甩开到位桶DB(JSON)(提交)
  • 那么我保存该到我的Rails DB和视图返回。我试过了whenever宝石。

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 

我必须在Rails的控制台首先运行Bitbucket.connection然后Bitbucket.savedata保存到数据库。

感谢您的任何建议和帮助。

回答

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

尼斯之一!真的很感激它..代码更新,所以我会创建一个新的提交和测试它.. – liborza

+0

好吧它的工程太棒了!再次感谢。 – liborza