原來的ActiveResource模型之間的連接共享。所以,如果你在一個模型中設置的格式,它確實遠離其他車型不同的格式。但是,如果您在兩個不同的型號上調用.connection.format
方法,那麼每次設置新格式時都會更改該格式。所以,如果Profile
得到裝載第二,然後.connection.format
格式:json
兩個模型變成ActiveResource::Formats::JsonFormat
如何讓兩個不同的ActiveResource模型使用兩個不同的連接對象?
我原來的問題是完全不同的(我沒有完全理解發生了什麼) - 你可以看看編輯歷史看到原來的版本。希望我會得到更多的答覆......
證明:
class Location < ActiveResource::Base
self.format = :xml
end
class Profile < ActiveResource::Base
self.format = :json
end
然後在rails console
...
>> Location.format
=> ActiveResource::Formats::XmlFormat
>> Location.connection.format
=> ActiveResource::Formats::XmlFormat
到目前爲止好...的Location
模型和它的連接有正確的格式。
>> Profile.format
=> ActiveResource::Formats::JsonFormat
看起來正常,那是Profile
我想要的格式。
>> Location.format
=> ActiveResource::Formats::XmlFormat
好吧...... Location.format仍然有裝載的剖面模型 注意後是相同的:這些模型是懶加載,以使得不包含他們的文件和代碼,直到你嘗試調用班級名稱。
>> Location.connection.format
=> ActiveResource::Formats::JsonFormat
而這裏的問題開始。我們已經取得的剖面模型的一個電話後,f'ed了Location.connection.format
>> Profile.connection.format
=> ActiveResource::Formats::JsonFormat
的格式爲不應該是相同的。這會導致解析在您調用諸如Location.find(:all,:from =>「/something.xml」)時完全被破壞 - 它試圖解析爲json
我想我的問題現在是 - 我如何分開兩個連接? (或者以其他方式解決此問題)
編輯在控制檯中添加此測試:
>> Location.connection == Profile.connection
=> true