假设:
class Base
def foo
puts 'foo!!!'
end
end
class Ball < Base
end
我想:
Ball.new.foo
返回错误:No Method Found
。Base.new.foo
返回:foo!!!
。我的尝试是:
protected def foo
,这样就可以了。但是这对2不起作用。任何想法如何使1.和2.工作?
问题背景
我有一个ApplicationController
操作def routing_error
来处理所有剩余的未定义路由。这个问题是继承ApplicationController
的所有其他控制器都继承了该操作,我希望它不是。我可以使用动作def routing_error
创建一个单独的控制器,但我觉得它有点矫枉过正,而且只是想知道是否有另一种解决方法。
答案 0 :(得分:7)
执行:
class Ball < Base
undef_method :foo
end
如果你想为许多类取消定义方法,并且你不想为每个类编写如上所述的代码,那么在它们之间创建一个类。
class Dummy < Base
undef_method :foo
end
class Base < Dummy
end
class Base2 < Dummy
end
...