今天在修改项目 model 中几个不好的方法,由于它们的调用比较多,所以定义了一个 methods_deprecate 的类方法,用来分发旧的方法,定义的方式如下:
def self.methods_deprecate(old_method, new_method)
define_method(old_method) do |*args, &block|
send(new_method, *args.unshift(old_method), &block)
end
end
eg:
methods_deprecate :old_m,:new_m
def new_m(*args)
puts args
end
执行->class_name.new.old_m 'aaa' 打印出:
old_m
aaa
上面是对实例方法的处理,运行起来还 ok,如果把 new_m 改成类方法,结果就很不理想了,我的 methods_deprecate 如何写才能实现能够处理 old_m 和 new_m 都为类方法;old_m 和 new_m 之一为类方法这三种情况呢? 求指教啊