ROXML和访问关系中的父对象

时间:2012-01-24 16:55:09

标签: ruby-on-rails ruby

我正在使用ROXML来读取并自动构建格式正确的XML的Ruby对象。

我有嵌套资源,所以在我的XML中,例如:

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

问题在于:

  1. 当我读到这个网址时,我会收到一个blog对象,我可以在其上调用blog.posts.count然后按预期返回3 - 这是有用的。
  2. 当我致电blog.first时,我会收到ROXML定义的post集合中的第一个posts - 这是有效的。
  3. 但是,无效的是调用父对象。我希望能够获取给定的post对象并调用post.blog来获取其父blog个对象。如何在post对象上定义此关系?我只是定义一个方法,并提供xml_accessor声明吗?这似乎不对(并且没有用),因为xml_accessor方法意味着直接从XML提取属性,并且在XML的post部分内,将没有{{1 XML - 它是另一种方式。
  4. 那么,如何从通过ROXML构建的对象中访问子对象的父对象?

1 个答案:

答案 0 :(得分:1)

我或多或少是ROXML的当前作者/维护者(http://github.com/Empact)。

首先我想知道,你提交了这个:https://github.com/Empact/roxml/issues/36这是追踪这个问题的当前问题。

在任何情况下,答案是图书馆当前没有建立这种关系,如果你想到它,我们不会那么疯狂,毕竟ActiveRecord没有建立一个双方的没有对称的数据关系has_many / belongs_to声明。

但是ROXML可以!在所有子对象被解析为更高级别对象下的子对象之后,我们可以向下传播父对象信息以建立连接。

我目前没有时间做这项工作,但如果您想加入图书馆,我很乐意审核并将其纳入图书馆。

您还可以查看Representable:https://github.com/apotonick/representable它是部分来自ROXML代码库创建的,并且更加积极地维护。不确定它是否具有此功能。