我想询问是否有任何方法如何将数据库从外部源更新到我的 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
中运行才能保存到数据库中。
感谢您的任何建议和帮助。
答案 0 :(得分: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
Doku为'存在?': http://apidock.com/rails/ActiveRecord/Base/exists%3F/class
或者你可以使用'first_or_create':
http://apidock.com/rails/v3.2.1/ActiveRecord/Relation/first_or_create