Рекомендуется использовать константу ActiveSupport:
'User'.constantize
Вы также можете использовать ядро const_get
, но в Ruby
Kernel.const_get('Foobar::User')
потерпит неудачу в Ruby <2.0. Поэтому, если вы хотите универсальное решение, вы должны использовать подход ActiveSupport: </p>
def my_constantize(class_name)
unless /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/ =~ class_name
raise NameError, "#{class_name.inspect} is not a valid constant name!"
end
Object.module_eval("::#{$1}", __FILE__, __LINE__)
end