继承模块/类方法

时间:2015-12-01 08:57:58

标签: ruby

我的模块有一个方法:

module MySqlConnection
  def database_connect(application)
    # Code in here
  end
end

我有第二个模块,其中一个类使用database_connect

module ResetPopups
  class PopupsOff
    include MySqlConnection
    def self.reset_popup
      database_connect("#{APP}")
    end
  end
end

我打电话的时候:

ResetPopups::PopupsOff.reset_popup

我得到undefined method database_connect。为什么会这样?

2 个答案:

答案 0 :(得分:5)

include将模块方法添加为实例方法,而extend将它们添加为单例方法。由于您想在类(单例上下文)的上下文中使用它,您需要使用extend

extend MySqlConnection

答案 1 :(得分:3)

module ResetPopups
  class PopupsOff
    extend MySqlConnection
    def self.reset_popup
      database_connect("#{APP}")
    end
  end
end

会起作用

这里的hapening是你include MySqlConnection,它在其中定义了方法(database_connect)实例方法。但是你在类范围内使用这个模块,在类上调用database_connect