我已经设置了如下所示的两个类:
似乎在评估继承关系
class Parent
def self.inherited(child)
child.custom_class_method
end
def self.custom_class_method
raise "You haven't implemented me yet!"
end
end
class Child < Parent
def self.custom_class_method
"hello world"
end
end
似乎在评估继承关系
Child < Parent
时,会调用self.inherited
,然后引发Parent
版本的self.custom_class_method
,而不是Child
版本的self.custom_class_method
。这是一个问题,因为我没有得到预期的"hello world"
,而是抛出了一个错误,说"You haven't implemented me yet!"
难道只有当Parent
的self.inherited
执行完毕后,才会评估Child
的self.custom_class_method
吗?如果是这样的话,也许有一种解决方法吗?我应该不在父类上放置raise
检查吗?
custom_class_method
的唯一方法应该是调用super
。否则,只需调用Child.custom_class_method
就应该输出 "hello world"。能否提供更深入的日志记录? - Cole Bittel