Ruby - 在模块内获取const_missing而不是顶级

时间:2011-07-27 06:20:50

标签: ruby

我有一个名为Plants的模块,其中包含const_missing方法和一个名为Sunflower的类。当我调用未定义的常量时,不调用模块内的const_missing方法。而是调用Object类中的const_missing。有没有办法让模块内的const_missing被触发?

module Plants
        def self.const_missing(name)
                puts name
        end

        class Sunflower
                def some_method
                        Grass
                end
        end
end


obj = Plants::Sunflower.new
obj.some_method

提前致谢! :)

2 个答案:

答案 0 :(得分:3)

module Plants

  def const_missing(name)
    puts name
  end

  class Sunflower
    extend Plants
    def some_method
      Grass
    end
  end
end

答案 1 :(得分:1)

有两种方法:

将您的电话改为

def some_method
  ::Plants::Grass
end

确保您正在调用Plants :: Grass

或将const_missing移动到向日葵类