如何保存对模型的响应
How to save a response to a model
我正在尝试将此响应从 API 保存到模型字段。我无法保存它,因为 mongoid 说这不是字符串。我尝试将它保存为数组和哈希。运气不好。
我怎样才能将它正确地保存在一个字段中或正确地格式化它以便我可以将它保存为数组或散列以便我可以调用它later.I我想可能是这样的但感觉不对.
transactions.rb
field :accounts, type: Array.new
...
def account_pull
accounts_response = Api.set_user(access_token, ['auth'])
self.accounts = accounts_response.accounts
model.save
end
end
这是我收到的完整回复的示例。
#<Api::User:0xb7e9f2c @accounts=[#<Api::Account:0xb7b6eb0 @id="QPO8Jo8vdDHMepg41PBwckXm4KdK1yUdmXOwK", @name=nil, @type="depository", @meta={"number"=>"9606", "name"=>"Bank Savings"}, @institution_type="fake_institution", @available_balance=1203.42, @current_balance=1274.93, @subtype=nil, @numbers={"routing"=>"021000021", "account"=>"9900009606", "wireRouting"=>"021000021"}>, #<Api::Account:0xb7b6ba4 @id="nban4wnPKEtnmEpaKzbYFYQvA7D7pnCaeDBMy", @name=nil, @type="depository", @meta={"number"=>"1702", "name"=>"Bank Checking"}, @institution_type="fake_institution", @available_balance=1081.78, @current_balance=1253.32, @subtype=nil, @numbers={"routing"=>"021000021", "account"=>"9900001702", "wireRouting"=>"021000021"}>, #<Api::Account:0xb7b68e8 @id="XARE85EJqKsjxLp6XR8ocg8VakrkXpTXmRdOo", @name=nil, @type="depository", @meta={"number"=>"5204", "name"=>"Bank Premier Checking"}, @institution_type="fake_institution", @available_balance=7205.23, @current_balance=7255.23, @subtype=nil, @numbers={"routing"=>"021000021", "account"=>"9900005204", "wireRouting"=>"021000021"}>, #<Api::Account:0xb7b66cc @id="pJPM4LMBNQFrOwp0jqEyTwyxJQrQbgU6kq37k", @name=nil, @type="credit", @meta={"limit"=>12500, "number"=>"3002", "name"=>"Bank Credit Card"}, @institution_type="fake_institution", @available_balance=9930, @current_balance=2275.58, @subtype=nil, @numbers={}>], @transactions=[], @permissions=["auth"], @access_token="test_chase", @api_res="success", @info={}, @pending_mfa_questions="", @type=nil>
试试这个代码
将帐户字段类型更改为散列
class Transactions
include Mongoid::Document
field : accounts :type => Hash
end
然后你可以将响应转换为哈希后保存
def account_pull
response = Api.set_user(access_token, ['auth'])
accounts = response.accounts
accounts_hash = Hash[accounts.map.with_index { |x, i| [i, x] }]
self.accounts = accounts_hash
self.save
end
您的响应既不是字符串也不是数组或哈希:它是一个 API::User 和一个 API::Account 数组。
也许使用 as_json 将它转换为一个简单的结构就可以了:
model.user = api_user.as_json
model.save
或者,您可以尝试获取初始响应,以避免多次转换(如果可能)。
我正在尝试将此响应从 API 保存到模型字段。我无法保存它,因为 mongoid 说这不是字符串。我尝试将它保存为数组和哈希。运气不好。
我怎样才能将它正确地保存在一个字段中或正确地格式化它以便我可以将它保存为数组或散列以便我可以调用它later.I我想可能是这样的但感觉不对.
transactions.rb
field :accounts, type: Array.new
...
def account_pull
accounts_response = Api.set_user(access_token, ['auth'])
self.accounts = accounts_response.accounts
model.save
end
end
这是我收到的完整回复的示例。
#<Api::User:0xb7e9f2c @accounts=[#<Api::Account:0xb7b6eb0 @id="QPO8Jo8vdDHMepg41PBwckXm4KdK1yUdmXOwK", @name=nil, @type="depository", @meta={"number"=>"9606", "name"=>"Bank Savings"}, @institution_type="fake_institution", @available_balance=1203.42, @current_balance=1274.93, @subtype=nil, @numbers={"routing"=>"021000021", "account"=>"9900009606", "wireRouting"=>"021000021"}>, #<Api::Account:0xb7b6ba4 @id="nban4wnPKEtnmEpaKzbYFYQvA7D7pnCaeDBMy", @name=nil, @type="depository", @meta={"number"=>"1702", "name"=>"Bank Checking"}, @institution_type="fake_institution", @available_balance=1081.78, @current_balance=1253.32, @subtype=nil, @numbers={"routing"=>"021000021", "account"=>"9900001702", "wireRouting"=>"021000021"}>, #<Api::Account:0xb7b68e8 @id="XARE85EJqKsjxLp6XR8ocg8VakrkXpTXmRdOo", @name=nil, @type="depository", @meta={"number"=>"5204", "name"=>"Bank Premier Checking"}, @institution_type="fake_institution", @available_balance=7205.23, @current_balance=7255.23, @subtype=nil, @numbers={"routing"=>"021000021", "account"=>"9900005204", "wireRouting"=>"021000021"}>, #<Api::Account:0xb7b66cc @id="pJPM4LMBNQFrOwp0jqEyTwyxJQrQbgU6kq37k", @name=nil, @type="credit", @meta={"limit"=>12500, "number"=>"3002", "name"=>"Bank Credit Card"}, @institution_type="fake_institution", @available_balance=9930, @current_balance=2275.58, @subtype=nil, @numbers={}>], @transactions=[], @permissions=["auth"], @access_token="test_chase", @api_res="success", @info={}, @pending_mfa_questions="", @type=nil>
试试这个代码
将帐户字段类型更改为散列
class Transactions
include Mongoid::Document
field : accounts :type => Hash
end
然后你可以将响应转换为哈希后保存
def account_pull
response = Api.set_user(access_token, ['auth'])
accounts = response.accounts
accounts_hash = Hash[accounts.map.with_index { |x, i| [i, x] }]
self.accounts = accounts_hash
self.save
end
您的响应既不是字符串也不是数组或哈希:它是一个 API::User 和一个 API::Account 数组。
也许使用 as_json 将它转换为一个简单的结构就可以了:
model.user = api_user.as_json
model.save
或者,您可以尝试获取初始响应,以避免多次转换(如果可能)。