我有一个用一堆类方法定义的实用程序类。在Rails控制台中,当我使用Object.const_defined?
搜索类时,它返回false。但在调用其中一个类方法或创建类的实例后,Object.const_defined?
将返回true。这是因为某种延迟加载实例化的事情吗?有没有其他方法可以检查是否存在将返回true的类,即使我还没有实例化任何东西?
答案 0 :(得分:7)
这是一种黑客行为,但它有效
Object.const_get(:ClassName).is_a?(Class) rescue false
如果定义了类,则上面的语句将返回true,否则返回false
答案 1 :(得分:6)
您可以使用safe_constantize。
your_class = "YourClassName".safe_constantize
if your_class && your_class.class == Class
your_class.new(options).run
end