Necesito una clase que tenga un método "to_s" semiautomático (para generar XML de hecho). quisiera iterar a través de todos los métodos automáticos establecidos en mi línea 'attr_accessor':Ruby: métodos generados attr_accessor - cómo iterarlos (en to_s - formato personalizado)?
class MyClass
attr_accessor :id,:a,:b,:c
end
c=MyClass.new
Hasta el momento estoy haciendo un básica:
c.methods - Object.methods
=> ["b", "b=", "c", "c=", "id=", "a", "a="]
estoy frente a algunos desafíos:
- 'id' puede causar un ligero dolor de cabeza, ya que Object parece tener un 'id'.
- La llamada 'c.methods' anterior, devuelve cadenas - ¿No obtengo ningún otro metadato? (En Java 'método' es un objeto, donde podría realizar más reflexión).
- Tengo relaciones de uno a muchos con los que tengo que lidiar ('c' es un tipo de matriz de otros tipos de objetos).
Esto es lo que trato de hacer: quiero diseñar un Objeto simple que tenga un 'to_s' que construirá un fragmento de XML: por ejemplo.
<id> 1 </id>
<a> Title </a>
<b> Stuff </b>
<c>
<x-from-other-object>
<x-from-other-object>
....
</c>
Y luego heredarán mis datos clases de ese objeto simple: para que (con suerte) me siento un mechansim para construir todo un documento XML.
Estoy seguro de que estoy volviendo a inventar la rueda aquí también ... por lo que otros enfoques probados son bienvenidos.
Interesante Simon - necesidad de pasar por esto antes de que pueda votar! Gracias! – monojohnny
Esto definitivamente ha ayudado a +1 - pero el problema principal aquí, es que realmente quiero retomar las cosas definidas por attr_accessor realmente. – monojohnny
Han aclarado la descripción un poco también para indicar esto. – monojohnny