Как мне превратить строку в имя класса, но только если этот класс уже существует?
Если Amber * уже класс, я могу получить строку из классачерез:
Object.const_get("Amber")
или (в Rails)
"Amber".constantize
Но любой из них завершится с NameError: uninitialized constant Amber
, если Amber еще не является классом.
MyПервой мыслью является использование метода defined?
, но он не делает различий между классами, которые уже существуют, и классами, которые не существуют:
>> defined?("Object".constantize)
=> "method"
>> defined?("AClassNameThatCouldNotPossiblyExist".constantize)
=> "method"
Итак, как я могу проверить, если строка именует класс раньше?Я пытаюсь преобразовать это?(Хорошо, а как насчет блока begin
/ rescue
для отлова ошибок NameError? Слишком некрасиво? Я согласен ...)