У меня есть класс утилиты, определенный с помощью класса методов класса. В консоли Rails, когда я ищу класс, используя Object.const_defined?
, он возвращает false. Но после вызова одного из методов класса или создания экземпляра класса Object.const_defined?
возвращает true. Это из-за какой-то ленивой загрузки экземпляра? Есть ли другой способ проверить наличие класса, который вернет true, даже если я еще ничего не создавал?Рельсы, как я могу проверить существование класса, если он еще не создан?
4
A
ответ
5
Это своего рода хак, но он работает
Object.const_get(:ClassName).is_a?(Class) rescue false
Выше заявление возвращает истину, если определен класс и возвращать ложь в противном случае
6
Вы можете использовать safe_constantize.
your_class = "YourClassName".safe_constantize
if your_class && your_class.class == Class
your_class.new(options).run
end
Возможно, вы просто попробуете их загрузить; если класс не был загружен, он не был загружен, например, http://stackoverflow.com/q/19839847/438992 –
@ Дай спасибо за информацию, это помогает мне лучше понять – zako42