ActiveRecord引入了对其默认JSON输出格式的更改。它来自
{ "user": { some_junk } }
到
{ some_junk }
ActiveResource显然已经跟随他们的领先优势,希望将JSON视为
{ some_junk }
我正在拼命地使用一个发出
的RESTful Web服务{ "user": { some_junk } }
有没有办法告诉我的ActiveResource :: Base类这样做?这是我的代码。
class User < ActiveResource::Base
self.site = "http://example.com/"
self.format = :json
end
更新:我现在放弃了ActiveResource,除非有人知道答案;与此同时,我能够通过
实现我想要的GETrequire '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!
答案 0 :(得分:10)
是的,ActiveResource目前在数据格式方面有点不灵活。
原则上,您可以根据ActiveResource::Formats::JsonFormat
模块自己编写一个自定义格式模块(例如JsonWithRootFormat
),然后在模型中指定它作为您的格式:
self.format = :json_with_root
但是,ActiveResource::Base
与格式无关 - 它目前does a check看你是否正在使用XmlFormat
,并且只有你通过根节点才能通过。
所以你可以通过制作自己的格式模块和猴子修补ActiveResource::Base
来获得你想要的东西,但这并不理想。我肯定会欢迎使Base
格式无关的补丁受到欢迎。
答案 1 :(得分:0)
以下是@vaskas撰写自定义ActiveResource格式化程序的好文章。
将Hashes用作ActiveResource集合
http://vaskas.me/blog/2012/02/07/using-hashes-as-activeresource-collections/