Как преобразовать строку в User
?Как преобразовать строку в константу в Ruby?
ответ
Вы можете использовать метод Module#const_get
. Пример:
irb(main):001:0> ARGV
=> []
irb(main):002:0> Kernel.const_get "ARGV"
=> []
Если у вас есть ActiveSupport загружены (например, в Rails), вы можете использовать
"User".constantize
Рекомендуемый способ заключается в использовании constantize ActiveSupport в:
'User'.constantize
Вы также можете использовать загрузки ядра const_get
, но в Ruby < 2.0 он не поддерживает константы с именами, что-то вроде этого:
Kernel.const_get('Foobar::User')
не работает в Ruby < 2.0. Так что если вы хотите, общее решение, вы бы разумно использовать ActiveSupport подход:
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
const_get работает также для констант с именами, начиная с ruby 2.0 – untidyhair
Поскольку Ruby 2.0 достиг EOL, больше нет необходимости втягивать ActiveSupport в зависимость от ссылки на константу со строкой. :-) – Drenmi
См. Также '' User'.afe_constantize' –
Object.const_get("User")
Нет необходимости требовать ActiveSupport.
+1 больной active_support, загрязняющий общие рубиновые вопросы. –
Используйте рубин магический метод: eval()
:
eval("User") #=> User
Это, вероятно, полный перебор, поскольку 'eval' не предназначен для использования таким образом, и с более конкретными альтернативами следует полностью избегать. – yagooar
- 1. Как преобразовать константу в десятичную строку в Java
- 2. Как найти константу в Ruby?
- 3. Как преобразовать строку в UTF8 в Ruby
- 4. Как преобразовать Strftime в строку в Ruby?
- 5. Как преобразовать строку в UpperCamelCase в Ruby?
- 6. Как преобразовать строку в datetime в ruby
- 7. Как преобразовать строку в целое в Ruby
- 8. Как преобразовать эту строку Ruby в массив?
- 9. Как преобразовать строку пробела в строку CSV в Ruby?
- 10. Когда преобразовать переменную в константу в Java?
- 11. Создать многоуровневую константу в ruby
- 12. Как преобразовать значение constat в константу?
- 13. NotSupportedException: Не удалось преобразовать константу 1 в строку
- 14. В: Как импортировать константу в строку?
- 15. Ruby преобразовать строковый массив в строку
- 16. Вставьте константу PHP в строку
- 17. Ruby - преобразовать целое число в строку
- 18. Ruby: TypeError: невозможно преобразовать строку в целое
- 19. Невозможно преобразовать строку с '<' в ruby
- 20. Невозможно преобразовать массив в строку (Ruby)
- 21. Как преобразовать строку/преобразовать строку в Expr
- 22. Объявлять строку как константу в sympy
- 23. Как преобразовать строку в объект?
- 24. Как объявить константу ruby (RMagick) в файле YAML
- 25. Как преобразовать математическое выражение в строку без оценки в Ruby?
- 26. Как преобразовать строку юникода в символы символа в Ruby?
- 27. Как преобразовать строку в YAML в Ruby 2.3.0?
- 28. Как преобразовать строку в ссылку на переменную в Ruby?
- 29. Как преобразовать строку изображения в поток в Ruby
- 30. Как преобразовать хэш в строку JSON в Ruby 1.9?
Вы пытаетесь вызвать переменную функцию? – harbichidian
Мне также хотелось бы ответить на этот вопрос; однако вы пытаетесь создать новую константу на основе строки, ИЛИ найти уже инициализированную константу? Также вы ищете ванильный рубин или Rails? – onebree