У меня есть базовый класс в Ruby, у которого есть метод класса, который он унаследовал. Я хотел бы вызвать этот метод в базовом классе, но передать ему параметр, указанный производным классом, например:
class Base < SuperDuperClass
super_duper_class_method :option => my_option_value
def self.my_option_value
raise "Method my_option_value must be overridden by all subclasses"
end
end
class Derived < Base
def self.my_option_value
"My Derived Option Value"
end
end
Однако это не работает. Я полагаю, это потому, что код верхнего уровня в базовом классе выполняется до кода верхнего уровня в производном классе, поэтому производный метод не определен при вызове super_duper_class_method. Я бы предпочел не вызывать super_duper_class_method во всех производных классах, а просто вместо этого указать параметр.
Любые идеи?