我试图理解这个电话:
deprecate :new_record?, :new?
它使用这种弃用的方法:
def deprecate(old_method, new_method)
class_eval <<-RUBY, __FILE__, __LINE__ + 1
def #{old_method}(*args, &block)
warn "\#{self.class}##{old_method} is deprecated," +
"use \#{self.class}##{new_method} instead"
send(#{new_method.inspect}, *args, &block)
end
RUBY
end
我不太了解这里使用的元编程。但是,这只是别名new_record?
方法的另一种方式吗?实际上,new_record?
它仍然可用,但在您使用它时会发出警告?有人想解释一下这是如何工作的吗?