Tengo el nombre de una clase y quiero crear una instancia de esa clase para poder recorrer cada atributo de rieles que está presente en el esquema de esa clase.
¿Cómo haría yo para hacer eso?
- Tengo el nombre como una cadena de la clase que quiero verificar.
- Supongo que necesito crear una instancia de clase para poder
- Recorra sus atributos e imprímalos.
ruby
ruby-on-rails-3
mhenrixon
fuente
fuente
eval
Respuestas:
En rieles puedes simplemente hacer:
En rubí puro:
con módulos:
usarías
fuente
Object.const_get('Foo::Bar')
no funcionará, mientras queconstantize
sí.clazz = 'Foo::Bar::Uber'
Muy simple en Rails: usar
String#constantize
fuente
Prueba esto:
Luego, para recorrer las variables de instancia de un objeto:
fuente
En Ruby 2.0 y anteriores, comunicados, posiblemente,
Object.const_get
será de forma recursiva realizar una búsqueda en un espacio de nombres comoFoo::Bar
. El ejemplo anterior es cuando el espacio de nombres se conoce de antemano y destaca el hecho de queconst_get
se puede llamar directamente a los módulos en lugar de hacerlo exclusivamenteObject
.fuente