比方说,ActiveRecord模型车中有两个布尔字段:suv和blue
如果汽车模型中有这样定义的方法
revenuData = labels.map(r => this.weekMap[+r] && this.weekMap[+r].revenu);
budgetData = labels.map(r => this.weekMap[+r] && this.weekMap[+r].budget);
现在,如果something_true?是的,如果我调用car.suv,则“超级”有效。但是,如果我调用car.blue,它将不起作用,然后car.blue返回存储在数据库中的suv的值。反正有这项工作吗?
答案 0 :(得分:1)
这是一个聪明的主意,但我认为它不会起作用。即使通过别名访问,在方法super
中调用suv
也只会调用suv
。您可以使用元编程:
class A
def a; 1; end
def b; 2; end
end
class B < A
def initialize(condition)
@condition = condition
end
%i{a b}.each do |fn|
define_method(fn) do
@condition ? super() : "default"
end
end
end
puts B.new(false).a # => "default"
puts B.new(false).b # => "default"
puts B.new(true).a # => 1
puts B.new(true).b # => 2