ROXML и доступ к родительским объектам в отношениях - PullRequest
0 голосов
/ 24 января 2012

Я использую ROXML для чтения и автоматического построения объектов Ruby из правильно отформатированного XML.

У меня есть вложенные ресурсы, поэтому в моем XML есть, например:

<blog ... >
  <post ... />
  <post ... />
  <post ... />
</blog>

Вот проблема:

  1. Когда я читаю этот URL, я получаю blog объект, на который я могу позвонить blog.posts.count, и я получаю обратно 3, как и ожидалось - это работает.
  2. Когда я звоню blog.first, я возвращаю первый post в коллекции posts, как определено ROXML - это работает.
  3. Однако не работает вызов родительского объекта. Я хотел бы иметь возможность взять данный post объект и вызвать post.blog, чтобы вернуть его родительский blog объект обратно. Как я могу определить это отношение для объекта post? Должен ли я просто определить метод и предоставить объявление xml_accessor? Это кажется неправильным (и не сработало), потому что xml_accessor методы предназначены для извлечения атрибутов непосредственно из XML, а в разделе post XML не будет blog XML - это наоборот.

Итак, как мне получить доступ к родительским объектам из дочерних объектов, из объектов, созданных с помощью ROXML?

1 Ответ

1 голос
/ 26 января 2012

Я более или менее текущий автор / сопровождающий ROXML (http://github.com/Empact).

Сначала мне интересно, вы отправили это: https://github.com/Empact/roxml/issues/36 Это будет текущая проблема, отслеживающая эту проблему.

В любом случае, ответ заключается в том, что библиотека в данный момент не создает эти отношения, и если вы подумаете об этом, мы не настолько сумасшедшие, как мы, ведь ActiveRecord не создает обе стороны отношения БД без симметричных объявлений has_many / own_to.

Но ROXML может! После того, как все подчиненные объекты анализируются как дочерние объекты объекта более высокого уровня, мы можем просто распространить информацию о родителях, чтобы установить соединение.

В настоящее время у меня нет времени, чтобы выполнить эту работу, но если вы хотите сделать дополнение к библиотеке, я более чем счастлив проверить и включить его в библиотеку.

Вы также можете посмотреть на Представляемый: https://github.com/apotonick/representable он был создан частично из кодовой базы ROXML и поддерживается более активно. Не уверен, что он имеет эту функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...