Ruby Rails - 将Json映射到模型

时间:2017-05-16 01:43:33

标签: ruby-on-rails json ruby

我目前正在尝试使用Json将我的数据库与另一个数据库同步,但我遇到了他们正在使用的密钥问题。

def sync
    url = '...' # Returns "{ "class": 20, "user": "John" }"
    uri = URI(url)
    response = Net::HTTP.get(uri)
    response_hash = JSON.parse(response)
...

他们在回复中使用关键字“class”,但我认为我不允许这样做,所以我将其作为'cls'。现在,如果我尝试创建一个新用户,我会收到错误,因为它无法将“类”映射到任何内容。

我一直在尝试更改密钥以匹配我的新密钥,但一直无法使其工作。

使用答案等因某些原因无效。

pattern = { "class" => "cls" }

response_hash.inject({}) do |new_hash, (k, v)|
  key = pattern[k] || k
  new_hash[key] = v
  new_hash
end

但我确实注意到我有一个Hash,而有些示例创建了一个HashWithIndifferentAccess,所以他们可以response_hash[:class],但我只会返回nil

这个问题的最佳解决方案是什么?理想情况下,我不必重新映射任何键,只需将Json放入我的数据库即可。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

只需这样做

response_hash['cls'] = response_hash.delete('class')

结果将是{ :cls => 20, :user => "John" },您可以将其直接输入数据库。