Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails在尚未实例化时,如何检查类的存在性?_Ruby On Rails_Ruby_Meta - Fatal编程技术网

Ruby on 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

我有一个用一堆类方法定义的实用类。在Rails控制台中,当我使用
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