【发布时间】:2016-05-20 16:07:43
【问题描述】:
给定:
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,这样 1. 工作。但是,这不适用于 2。 - 我可以像上面给出的那样做,这样 2. 就可以了。但是 1. 不起作用。
任何想法如何使 1. 和 2. 工作?
问题的背景
我有一个 ApplicationController 操作 def routing_error 来处理所有剩余的未定义路由。问题在于继承ApplicationController 的所有其他控制器也继承了该操作,我希望它不是。我可以只使用def routing_error 操作创建一个单独的控制器,但我觉得这有点矫枉过正,我只是想知道是否有其他方法可以解决这个问题。
【问题讨论】:
标签: ruby oop inheritance visibility