【发布时间】:2020-07-13 22:19:13
【问题描述】:
我有以下课程:
模块
module AlertService
module MessageTemplate
def generate_message
"test"
end
end
end
父类:
module Client
def post uri, params={}
Net::HTTP.post_form uri, params
end
end
module AlertService
class BaseAlert
extend MessageTemplate
include Singleton
include Client
def initialize; end
end
end
儿童班:
module AlertService
class TestAlert < BaseAlert
include Singleton
def initialize
options = {
username: "Screen Alert Bot",
http_client: Client
}
@notifier = Slack::Notifier.new(rails.config.url, options)
end
def self.create_message
message = generate_message
end
def self.send_message
create_message
@notifier.post blocks: message
end
end
end
我可以像这样创建测试警报:s= AlertService::TestAlert
但是当我这样做时出现错误:
s.send_message
NoMethodError: undefined method `generate_message' for AlertService::TestAlert::Class
generate_message 是 BaseAlert 类中包含的 MessageTemplate 模块中的一种方法。为什么说我继承的类无权访问该方法?
【问题讨论】:
-
什么是
generate_message?它没有在您的代码中列出。 -
@tadman 这是来自 MessageTemplate 模块的方法
标签: ruby inheritance module singleton