簡體   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