gpt4 book ai didi

ruby - 使子类无法访问实例方法

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:36 26 4
gpt4 key购买 nike

给定:

class Base
def foo
puts 'foo!!!'
end
end

class Ball < Base
end

我要:

  1. Ball.new.foo 返回错误:No Method Found
  2. Base.new.foo 返回:foo!!!

我的尝试是:

  • 我可以做 protected def foo,这样 1. 就可以了。然而,这不适用于 2。
  • 我可以像上面给出的那样做,所以 2. 有效。但是 1. 不起作用。

关于如何使 1. 和 2. 都起作用的任何想法?

问题背景

我有一个 ApplicationController 操作 def routing_error 来处理所有剩余的未定义路由。这个问题是所有其他继承 ApplicationController 的 Controller 也继承了那个 Action ,我希望它不是。我可以只使用 def routing_error 操作创建一个单独的 Controller ,但我觉得这太过分了,首先想知道是否有另一种方法可以解决这个问题。

最佳答案

做:

class Ball < Base
undef_method :foo
end

如果你想为许多类取消定义方法,并且不想为每个类都编写上面那样的代码,那么在它们之间创建一个类。

class Dummy < Base
undef_method :foo
end

class Base < Dummy
end

class Base2 < Dummy
end

...

关于ruby - 使子类无法访问实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35312952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com