Как использовать форматирование JSON с ruby ​​ActiveResource?

ActiveRecord ввел изменение в выходной формат JSON по умолчанию. Он пошел от

{ "user": { some_junk } }

к

{ some_junk }

ActiveResource, по-видимому, следил за их лидерством, ожидая, что он будет использовать JSON как

{ some_junk }

Я отчаянно пытаюсь использовать веб-службу RESTful, которая испускает

{ "user": { some_junk } }

Есть ли способ сказать мой класс ActiveResource:: Base? Вот мой код.

class User < ActiveResource::Base
    self.site = "http://example.com/"
    self.format = :json
end

Обновление. Я сейчас отказываюсь от ActiveResource, если только кто-то не знает ответа; в то же время, я смог достичь GET, который я хотел с помощью

require 'httparty' # sudo gem install httparty
result = HTTParty.get('http://foo.com/bar.json', headers => { "Foo" => "Bar"})
# result is a hash created from the JSON -- sweet!

Ответ 1

Да, ActiveResource в настоящее время немного негибкий, когда дело доходит до его форматов данных.

В принципе, идея заключается в том, что вы можете написать собственный пользовательский формат (например, JsonWithRootFormat) на основе модуля ActiveResource::Formats::JsonFormat, а затем укажите это как ваш формат в вашей модели:

self.format = :json_with_root

Однако ActiveResource::Base не очень форматно-агностик - в настоящее время выполняет проверку, чтобы узнать, используете ли вы XmlFormat, и только через root node, если вы находитесь.

Итак, вы могли бы получить то, что хотели, создав свой собственный модуль формата и обезвреживая ActiveResource::Base, но это вряд ли идеально. Я уверен, что патч, чтобы сделать Base немного больше формата-агностик, будет приветствоваться.