У меня есть имя класса, и я хочу создать экземпляр этого класса, чтобы я мог перебирать каждый атрибут rails, присутствующий в схеме этого класса.
Как я могу это сделать?
- У меня есть имя в виде строки класса, который я хочу проверить
- Думаю, мне нужно создать экземпляр класса, чтобы я мог
- Прокрутите его атрибуты и распечатайте их.
ruby
ruby-on-rails-3
mhenrixon
источник
источник
eval
Ответы:
В рельсах можно просто:
В чистом рубине:
с модулями:
вы бы использовали
источник
Object.const_get('Foo::Bar')
работать не будет, покаconstantize
будет.clazz = 'Foo::Bar::Uber'
В Rails очень просто: используйте
String#constantize
источник
Попробуй это:
Затем, чтобы перебрать переменные экземпляра объекта:
источник
В ruby 2.0 и, возможно, в более ранних версиях он
Object.const_get
будет рекурсивно выполнять поиск в таких пространствах имен, какFoo::Bar
. В приведенном выше примере пространство имен известно заранее и подчеркивается тот факт, что онconst_get
может вызываться непосредственно в модулях, а не только вObject
.источник