Can*_*yer 0 ruby ruby-on-rails
我有以下三个类:
class MessageBuilder
def initialize(template)
@template = template
puts @template.instance_of? MessengerTemplate
end
end
class MessengerTemplate
def initialize
@default_template_id = "111111"
end
end
class JobTemplate < MessengerTemplate
def initialize(name)
@name = name
@template_id = "2222"
end
end
Run Code Online (Sandbox Code Playgroud)
我正在尝试检查传递给的参数是否MessageBuilder#initialize是MessengerTemplate. 如果没有,我需要抛出一个错误。
当我打电话时:
message = MessageBuilder.new(JobTemplate.new("Invoice"))
Run Code Online (Sandbox Code Playgroud)
构造函数中的以下行:
puts @template.instance_of? MessengerTemplate
Run Code Online (Sandbox Code Playgroud)
打印FALSE。
有人可以告诉我我在这里做错了什么吗?
尝试:
@template.is_a?(MessengerTemplate)
Run Code Online (Sandbox Code Playgroud)
如文档中所述:
如果class是obj的类,或者class是obj或obj 中包含的模块的超类之一,则返回 true 。
MessengerTemplate是 的超类@template,因此@template.is_a?(MessengerTemplate) => true。