Rails 不断更新数据库(外部值)

Rails updating DB constantly (external values)

我想问一下是否有任何方法可以将数据库从外部源更新到我的 Rails DB 不断(每 1 小时)...

我正在尝试这样做,但是当我这样做时,我的数据库被复制并添加了新文件,所以是否有任何 if 声明我可以在哪里添加新值?

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 小时从 bitbucket 中提取一次数据,并且只用新的 'values' 更新你的数据库。在那种情况下,如何知道数据库中是否已有条目的问题取决于您。

例如你可以问:

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

'exists?' 的独库: http://apidock.com/rails/ActiveRecord/Base/exists%3F/class

或者您可以使用 'first_or_create':

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