ActiveResourceモデル間の接続が共有されていることが分かります。したがって、1つのモデルでフォーマットを設定した場合、はと他のモデルのフォーマットとは異なります。ただし、別の2つのモデルで.connection.format
メソッドを呼び出すと、新しい形式を設定するたびにその形式が変更されます。 Profile
はその後、フォーマット:json
を有する第二にロードされてしまったのであれば、両方のモデルの.connection.format
がActiveResource::Formats::JsonFormat
2つの異なるActiveResourceモデルで2つの異なる接続オブジェクトを使用するにはどうすればよいですか?
に変身私の元の質問は(私は完全に何が起こっていたかを理解していなかった)完全に異なっていた - あなたが編集履歴を見ることができます元のバージョンを参照してください。うまくいけば、私は...もっと回答を得るでしょう
証明:rails console
で次に
class Location < ActiveResource::Base
self.format = :xml
end
class Profile < ActiveResource::Base
self.format = :json
end
...
>> Location.format
=> ActiveResource::Formats::XmlFormat
>> Location.connection.format
=> ActiveResource::Formats::XmlFormat
これまでのところは良い... Location
モデルと、それは接続です正しい形式です。
通常のように見えますが、これはProfile
のフォーマットです。
>> Location.format
=> ActiveResource::Formats::XmlFormat
[OK]を... Location.formatはProfileモデル 注ロードされた後も同じである:あなたが呼び出そうとするまで、そのファイルとコードが含まれておりませんので、これらのモデルは、レイジーロードされているがクラス名。
>> Location.connection.format
=> ActiveResource::Formats::JsonFormat
ここで問題が始まります。我々はProfileモデルへの呼び出しを行った後、それはフォーマットが同じことになっていませんLocation.connection.format
>> Profile.connection.format
=> ActiveResource::Formats::JsonFormat
をf'ed。 (:すべて、:=>「/something.xml」から)これは、あなたがLocation.findのようなものへの呼び出しを行う際に、完全に壊れたように解析する原因となる - 私は私の質問を推測
json
としては
xml
の解析を試み今は - どのように私は2つの接続を分離するのですか? (または、そうでない場合は、この問題を解決する)
編集コンソールでこのテストを追加する:
>> Location.connection == Profile.connection
=> true