Eu tenho o nome de uma classe e quero criar uma instância dessa classe para que eu possa percorrer cada atributo do rails que está presente no esquema dessa classe.
Como eu faria isso?
- Eu tenho o nome como uma sequência da classe que quero verificar
- Eu acho que preciso instanciar uma instância de classe para que eu possa
- Passe pelos atributos e imprima-os.
ruby
ruby-on-rails-3
mhenrixon
fonte
fonte
eval
Respostas:
Nos trilhos, você pode apenas fazer:
Em rubi puro:
com módulos:
você usaria
fonte
Object.const_get('Foo::Bar')
não vai funcionar, enquantoconstantize
vai.clazz = 'Foo::Bar::Uber'
Muito simples no Rails: use
String#constantize
fonte
Tente o seguinte:
Em seguida, faça um loop pelas variáveis de instância de um objeto:
fonte
Em Ruby 2.0 e, lançamentos possivelmente mais cedo,
Object.const_get
vai recursiva executar uma pesquisa em um namespaces comoFoo::Bar
. O exemplo acima é quando o espaço para nome é conhecido antecipadamente e destaca o fato de queconst_get
pode ser chamado diretamente nos módulos, e não exclusivamenteObject
.fonte