检查类是否有嵌套类?

时间:2014-10-01 11:38:23

标签: ruby-on-rails ruby ruby-on-rails-4

假设我有一个类XXXPriceDocument可能有一个内部类LargePackageCharge,我该如何检查它是否存在?

1 个答案:

答案 0 :(得分:6)

你可以这样做:

XXXPriceDocument.constants.include?(:LargePackageCharge)

defined?(XXXPriceDocument::LargePackageCharge)

XXXPriceDocument.const_defined?(:LargePackageCharge)

在rails中稍微复杂一些,因为常量可能尚未加载。你需要解决这个问题:

class Module
  def const_exists?(mod)
    !!const_get(mod) 
  rescue NameError
    false
  end
end

XXXPriceDocument.const_exists?(:LargePackageCharge)