13

ActiveRecordは、デフォルトのJSON出力形式への変更を導入しました。それはから行きました

{ "user": { some_junk } }

{ some_junk }

ActiveResourceは明らかに彼らの先導に従い、JSONを次のように消費することを期待しています。

{ some_junk }

放出するRESTfulWebサービスを必死に消費しようとしています

{ "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!
4

2 に答える 2

10

ええ、ActiveResource は現在、データ形式に関しては少し柔軟性がありません。

JsonWithRootFormat原則として、モジュールに基づいてカスタム フォーマット モジュール (例: ) を自分で作成しActiveResource::Formats::JsonFormat、それをモデルのフォーマットとして指定できます。

self.format = :json_with_root

ただし、ActiveResource::Base形式にあまり依存しません。現在、を使用しているかどうかを確認XmlFormatし、使用している場合にのみルート ノードを渡します。

したがって、独自のフォーマット モジュールを作成し、モンキー パッチを適用することで、必要なものを取得できますが、ActiveResource::Base理想的とは言えません。ただし、フォーマットに依存しないようにするためのパッチはBase歓迎されると確信しています。

于 2009-05-22T12:49:13.447 に答える