Rails如何在未实例化时检查是否存在类?

时间:2014-02-06 20:46:28

标签: ruby-on-rails ruby meta

我有一个用一堆类方法定义的实用程序类。在Rails控制台中,当我使用Object.const_defined?搜索类时,它返回false。但在调用其中一个类方法或创建类的实例后,Object.const_defined?将返回true。这是因为某种延迟加载实例化的事情吗?有没有其他方法可以检查是否存在将返回true的类,即使我还没有实例化任何东西?

2 个答案:

答案 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