如何从API自动保存数据 - Ruby on Rails

时间:2016-10-11 17:29:21

标签: json ruby ruby-on-rails-5

我在互联网上搜索过,但是,我似乎无法在这个问题上得到明确的答案。我正在使用Block.io API将比特币支付添加到我的应用程序。我收到一个JSON哈希,其中包含每笔付款的新比特币地址,我可以提取比特币地址,但我需要它自动保存到我的数据库,当用户访问特定页面时,该地址也将在该页面上生成。我正在使用Postgresql

JSON看起来像这样:

{"status"=>"success", "data"=>{"network"=>"BTCTEST", "address"=>"2MstFNxtnp3pLLuXUK4Gra5dMcaz132d4dt", "available_balance"=>"0.01000000", "pending_received_balance"=>"0.00000000"}}

我有一个调用API来生成地址的控制器:

class PaymentsController < ApplicationController
  def index
   @new_address = BlockIo.get_new_address
  end
end

比特币地址使用:

显示
<%= @new_address["data"]["address"] %>

我正在考虑创建一个新的函数,它将比特币地址保存到数据库并映射路由以在访问特定页面时执行此函数,如:

控制器:

class PaymentsController < ApplicationController
  def create
   @new_address = BlockIo.get_new_address

 ## I need assistance with the rest to auto save

  end
end

路线:

match '/save_btc' => 'payments#create', via: [:get, :post]

当有人打开domain.com/save_btc时,比特币地址需要自动保存到数据库中。

我已经生成了以下迁移

rails g model Payment bitcoin:string

非常感谢任何评论或帮助。

1 个答案:

答案 0 :(得分:1)

看起来let namestUi = { renderNames(names){ return Array.from( names.reduce( (counters, {name_class}) => counters.set(name_class, (counters.get(name_class) || 0) + 1), new Map() ), ([name, count]) => ({name, count}) ); } }; let result = namestUi.renderNames([ { name_class: "John" }, { name_class: "John" }, { name_class: "Frank" }, { name_class: "John" }, ]); console.log(result);已经为你解析了JSON字符串并返回了常规的Ruby哈希。

我会尝试这样的事情:

BlockIo

您可能希望检查回复状态new_address = BlockIo.get_new_address Payment.create( bitcoin: new_address['data']['address'] ) ,并确保在保存之前该地址已存在。但上面的代码应该让你开始。

您可能希望在创建付款后进行重定向或new_address['status']之类的操作。

注意:您不需要使用head :ok作为变量名称。这通常仅在您将该信息传递给视图时使用。