Ruby类在模块下扩展自身是否有效?

Ruby类在模块下扩展自身是否有效?,ruby,Ruby,让一个Ruby类在一个单独的模块下扩展自身是否有效?例如,我有一个ErrorsController类 class ErrorsController < ApplicationController .... end 类错误控制器

让一个Ruby类在一个单独的模块下扩展自身是否有效?例如,我有一个
ErrorsController

class ErrorsController < ApplicationController
 ....
end
类错误控制器
但是如果在模块下,我想有一个不同的行为

class Share::ErrorsController < ErrorsController
 ....
end
类共享::ErrorsController
这里ErrorsController是对ErrorsController的扩展,它可以正常工作。但后来我写了很长的一段话:

module Share
  class ErrorsController < ErrorsController
  end
end
模块共享
类ErrorsController

有时似乎出现了问题。

如果父级错误控制器存储在其他模块中,您应该使用它的完整路径。
例如:

module Share
  class ErrorsController < OtherModule::ErrorsController
  end
end
module Share
  class ErrorsController < ::ErrorsController
  end
end
模块共享
类ErrorsController
要明确地引用“顶级”错误控制器,典型的方法是在其前面添加两个冒号。例如:

module Share
  class ErrorsController < OtherModule::ErrorsController
  end
end
module Share
  class ErrorsController < ::ErrorsController
  end
end
模块共享
类ErrorsController<::ErrorsController
结束
结束

您所说的“似乎有问题”是什么意思?是有问题,还是没有问题?你说的“某个时候”是什么意思?什么时候出现问题?你所说的“类扩展自身”是什么意思?这在Ruby中是不可能的。一个类只能扩展一个现有的类,继承子句在类定义中给出,此时该类还不存在,因此它无法扩展自身。顺便说一句,如果你想知道某个语法是否有效,你很容易找到:只需键入它,看看你是否得到一个
SyntaxError
。或者,您可以使用
ruby-c
(检查语法)。