我的模块有一个方法:
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
。为什么会这样?
答案 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
。