【发布时间】:2023-03-05 13:54:02
【问题描述】:
我有来自外部 API 的参数,这些参数使用 CamelCase 格式化 JSON 响应,我想将其放入我的 Rails 应用程序中:
{"AccountID"=>"REAWLLY_LONG_HASH_API_KEY_FROM_EXTERNAL_SERVICE",
"ChannelProductDescription"=>"0004", "Currency"=>"CAD",
"CurrentBalance"=> {"Amount"=>"162563.64", "Currency"=>"CAD"}}
使用下面的脚本我将它们转换为小写:
data = JSON.parse(response, symbolize_keys: true)
data = {:_json => data} unless data.is_a?(Hash)
data.deep_transform_keys!(&:underscore)
data.deep_symbolize_keys!
让我正确格式化params,如下所示:
{:account_id=>"REAWLLY_LONG_HASH_API_KEY_FROM_EXTERNAL_SERVICE",
:channel_product_description=>"SAVINGS", :currency=>"CAD",
:current_balance=> {:amount=>"43.00", :currency=>"CAD"}}
我正在尝试将此外部 API 响应映射到通用 Rails 模型 Account,其中来自此 API 调用的 JSON 将作为参数干净地返回到我的数据库中,以允许干净的保存界面,例如:
@account = Account.create(ParamParser.call(params))
但是我在转换 :account_id 时遇到了问题,因为该参数与我的数据库的主键冲突。
为了解决这个问题,我的想法是将params[:account_id] 的所有符号实例转换为params[:account_key_id],这样这些参数就不会与我的数据库现有的account_id 字段冲突。
我该怎么做,有没有比我在这里描述的更好的方法来使用外部 JSON API?
【问题讨论】:
标签: ruby-on-rails json ruby postgresql api