Когда я обрабатываю XML с условием: include для полиморфной ассоциации, у меня это не работает. Я в конечном итоге с XML возвращения объекта указатели вместо реальных объектов, как:Rails не может отображать полиморфные ассоциации в XML?
<posts>
#<Comment:0x102ed1540>#<Comment:0x102ecaa38>#<Comment:0x102ec7fe0>#<Comment:0x102ec3cd8>
</posts>
Но as_json работает! Когда я сделать JSON с: включить пункт, ассоциации оказываются правильно, и я получаю что-то вроде:
posts":[
{"type":"Comment","created_at":"2010-04-20T23:02:30-07:00","id":7,"content":"fourth comment"},
{"type":"Comment","created_at":"2010-04-20T23:02:26-07:00","id":6,"content":"third comment"}]
Мой текущий обходной путь использует XML-строитель, но я не слишком комфортно, что в долгосрочной перспективе. Кто-нибудь знает об этой проблеме? Я вроде как поймал-22, потому что, хотя XML не отображает ассоциации, as_json не отображает в кошерном json-формате (возвращает массив, а не список хэшей как должный json) и десериализатор I ' m, использующий на стороне клиента, потребуется модификация для правильного анализа json.
редактировать Я использую 2.3.5 - также я использую has_many_polymorphs камень для полиморфного имеет много: через, что может быть причина вопроса ...
модели является то, что у меня есть притоны, и каждый видеовстречу имеет много сообщений, которые являются полиморфными для комментариев, фотографий и т. д.
Код контроллера для XML: format.xml {render: xml => @ hangouts.to_xml (: include =>: users,: methods = >: должности)}
Код для json аналогичен (в модели): def as_json (options) super (: include =>: users,: methods =>: posts)
Какую версию Rails вы используете? –
Вставьте свой код контроллера – bensie
jpartogi, bensie: Я использую 2.3.5 - также я использую камень has_many_polymorphs для полиморфного, имеет много: через, что может вызвать проблему ... Модель заключается в том, что у меня есть тусовки , и у каждой видеовстречи есть много сообщений, которые являются полиморфными для комментариев, фотографий и т. д. Код контроллера для XML: format.xml {render: xml => @hangouts.to_xml (: include =>: users,: methods =>: posts)} Код для json аналогичен (в модели): def as_json (опции) super (: include =>: users,: methods => : posts) – ambertch