J'ai le nom d'une classe et je souhaite créer une instance de cette classe afin de pouvoir parcourir chaque attribut de rails présent dans le schéma de cette classe.
Comment pourrais-je faire ça?
- J'ai le nom sous forme de chaîne de la classe que je veux vérifier
- Je suppose que j'ai besoin d'instancier une instance de classe pour pouvoir
- Parcourez ses attributs et imprimez-les.
ruby
ruby-on-rails-3
mhenrixon
la source
la source
eval
Réponses:
Dans les rails, vous pouvez simplement faire:
En rubis pur:
avec modules:
vous utiliseriez
la source
Object.const_get('Foo::Bar')
cela ne fonctionnera pas, alors queconstantize
cela fonctionnera.clazz = 'Foo::Bar::Uber'
Très simple dans Rails: utilisation
String#constantize
la source
Essaye ça:
Ensuite, pour parcourir les variables d'instance d'un objet:
la source
Ruby 2.0 et, peut - être les versions antérieures,
Object.const_get
va effectuer une recherche récursive sur un namespaces commeFoo::Bar
. L'exemple ci-dessus est lorsque l'espace de noms est connu à l'avance et met en évidence le fait qu'ilconst_get
peut être appelé directement sur les modules plutôt que exclusivement surObject
.la source