現在、データベースをJsonと別のデータベースと同期しようとしていますが、使用しているキーの問題が発生しています。Ruby Rails - Jsonとモデルをマッピングする
def sync
url = '...' # Returns "{ "class": 20, "user": "John" }"
uri = URI(url)
response = Net::HTTP.get(uri)
response_hash = JSON.parse(response)
...
は、彼らは応答して、キーワード「クラス」を使用しますが、私は私がすることを許可されていないと思うので、私は「CLS」としての鉱山を持っています。今、新しいユーザーを作成しようとすると、「クラス」を何かにマップできないため、エラーが発生します。
私は新しいキーと一致するようにキーを変更しようとしていましたが、それを動作させることができませんでした。
何らかの理由で効果がないなどの回答を使用する。
pattern = { "class" => "cls" }
response_hash.inject({}) do |new_hash, (k, v)|
key = pattern[k] || k
new_hash[key] = v
new_hash
end
しかし、例のいくつかはHashWithIndifferentAccess
を作成したので、彼らはresponse_hash[:class]
を行うことができますが、鉱山だけnil
を返すのに対し、私は、私がHash
を持っているという通知をしました。
この問題の最適な解決策は何でしょうか?理想的には、私は任意のキーを再マップする必要はなく、ちょうど私のデータベースにJsonをスローすることができます。
ありがとうございました。
私はあなたが提案したことを試しましたが、それでも私は同じ結果を与えています。なぜ私は分かりません。 'cls'はそこにはなく、 'class'はまだあります。ああ、しかし、私はresponse_hashから 'HashWithIndifferentAccess'を作成してみました。それを呼び出して、それが動作します。 –
私はそれを編集しました。代わりにそれを試してみてください。 – bitsapien
それはうまくいった、ありがとう。 :) –