我会在一个具体的例子上问它(在 Rails 中)。在“ Destroy without Javascript (revised) ”railscast 中,Ryan Bates 覆盖了#resources
路由方法:
module DeleteResourceRoute
def resources(*args, &block)
super(*args) do
# some code
end
end
end
ActionDispatch::Routing::Mapper.send(:include, DeleteResourceRoute)
但是Ruby中的继承不是以模块是“超类”的方式工作的。#super
那么,他怎么能从模块中调用呢?
如果可以覆盖这样的方法,那么人们不要这样做:
class SomeClass
alias old_method method
def method
# ...
old_method
# ...
end
end
可能会这样做:
class SomeClass
include Module.new {
def method
# ...
super
# ...
end
}
end
我错过了什么?