繁体   English   中英

在Ruby的类中找不到包含的Module方法

[英]Included Module method not found in class in Ruby

我的模块方法没有找到方法错误。 它们的定义如下:

module MyModule
  def my_method
    "stuff"
  end
end

这个类是这样的:

class MyClass
  include MyModule
  def self.do_stuff
    my_method
  end
end

然后我试图这样称呼它:

MyClass.do_stuff

我越来越

undefined method 'my_method" for MyClass:Class

我也尝试过

self.my_method

在模块中,但没有运气。 我应该提到这是Rails应用程序中的香草红宝石类。 application.rb包含以下行

config.autoload_paths += %W(#{config.root}/lib)

在控制台中,我可以验证模块是否已加载。 有什么想法吗? 谢谢

您想使用扩展使方法成为类方法。

class MyClass
  extend MyModule
  def self.do_stuff
    my_method
  end
end

在模块module_function函数定义为module_function ,它应该可以工作。

module MyModule
  module_function
  def my_method
    "stuff"
  end
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM