Ruby on rails Rails在尚未实例化时,如何检查类的存在性?
我有一个用一堆类方法定义的实用类。在Rails控制台中,当我使用Ruby on rails Rails在尚未实例化时,如何检查类的存在性?,ruby-on-rails,ruby,meta,Ruby On Rails,Ruby,Meta,我有一个用一堆类方法定义的实用类。在Rails控制台中,当我使用Object.const\u defined?搜索类时,它返回false。但在调用某个类方法或创建该类的实例后,Object.const\u defined?返回true。这是因为某种延迟加载实例化之类的事情吗?有没有其他方法可以检查是否存在一个将返回true的类,即使我还没有实例化任何东西?这是一种黑客行为,但它是有效的 Object.const_get(:ClassName).is_a?(Class) rescue false
Object.const\u defined?
搜索类时,它返回false。但在调用某个类方法或创建该类的实例后,Object.const\u defined?
返回true。这是因为某种延迟加载实例化之类的事情吗?有没有其他方法可以检查是否存在一个将返回true的类,即使我还没有实例化任何东西?这是一种黑客行为,但它是有效的
Object.const_get(:ClassName).is_a?(Class) rescue false
如果定义了类,上述语句将返回true,否则返回false,您可以使用
您可以尝试加载它们;如果该类尚未加载,则表示尚未加载,例如,@Dave感谢您提供的信息,这有助于我更好地理解您的意思,而不是
!!ClassName rescue false
更简单?是的,这是另一种方式ClassName rescue false如何?ClassName是truthy,如果它存在=)我想知道是否有一种方法可以做到这一点而不进行异常处理?
your_class = "YourClassName".safe_constantize
if your_class && your_class.class == Class
your_class.new(options).run
end