将外部JSON保存到数据库(RAILS)

时间:2016-04-22 16:51:59

标签: ruby-on-rails ruby json

我正在尝试将外部值从BitBucket保存到我的Rails应用程序然后在视图中返回它们(我是数据库的新手),所以如果有人可以帮助我,我会非常感激。

我在我的控制器中从BitBucket返回了API调用,因此它运行良好..然后我创建模型 bitbucket name:string message:text date:integer

所以现在我把它放到 bitbucket.rb 模型中:

class Bitbucket < ActiveRecord::Base
    def saveData
        require 'bitbucket_rest_api'   
          bitbucket = BitBucket.new login:'...', password:'...'

          repo = bitbucket.repos.commits.list '...', '...'
          data = repo["values"]

            data.each do |r|
                r["author"]["user"]["display_name"]
                r["message"]
                DateTime.strptime(r["date"], '%Y-%m-%dT%H:%M:%S%z').strftime("%D %r")
            end
    end
end

这是我想要保存到DB中的第一个调用,然后我想将每个新提交保存到数据库中。

非常感谢。

1 个答案:

答案 0 :(得分:2)

  1. 您应该像Ruby一样在Ruby中命名方法:save_data,而不是saveData

  2. 您的方法应该是类方法,因为您没有在其中使用任何对象。

  3. 您可以使用createnewsave链创建数据库条目。

  4. 这可能会有所帮助:

    class Bitbucket < ActiveRecord::Base
      def self.save_data
        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: DateTime.strptime(r["date"], '%Y-%m-%dT%H:%M:%S%z').strftime("%D %r")
          )
        end
      end
    end