Ich habe den Namen einer Klasse und möchte eine Instanz dieser Klasse erstellen, damit ich jedes Rails-Attribut durchlaufen kann, das im Schema dieser Klasse vorhanden ist.
Wie würde ich das machen?
- Ich habe den Namen als Zeichenfolge der Klasse, die ich überprüfen möchte
- Ich denke, ich muss eine Klasseninstanz instanziieren, damit ich kann
- Durchlaufen Sie die Attribute und drucken Sie sie aus.
ruby
ruby-on-rails-3
Mhenrixon
quelle
quelle
eval
Antworten:
In Schienen können Sie einfach tun:
In reinem Rubin:
mit Modulen:
du würdest verwenden
quelle
Object.const_get('Foo::Bar')
nicht funktioniertconstantize
.clazz = 'Foo::Bar::Uber'
Sehr einfach in Rails: verwenden
String#constantize
quelle
Versuche dies:
So durchlaufen Sie die Instanzvariablen eines Objekts:
quelle
In Ruby 2.0 und möglicherweise früheren Versionen
Object.const_get
wird rekursiv eine Suche in Namespaces wie durchgeführtFoo::Bar
. Das obige Beispiel ist, wenn der Namespace im Voraus bekannt ist und die Tatsache hervorhebt, dassconst_get
Module direkt und nicht ausschließlich aufgerufen werden könnenObject
.quelle