让Ruby类扩展自身,但是在一个单独的模块下,这是有效的语法吗?例如,我有一个ErrorsController
类。
class ErrorsController < ApplicationController
....
end
但是我想在模块下有不同的行为。
class Share::ErrorsController < ErrorsController
....
end
这里ErrorsController扩展了ErrorsController,效果很好。但是后来我写了很长的文字:
module Share
class ErrorsController < ErrorsController
end
end
有时候似乎有问题。
答案 0 :(得分:5)
要明确引用“顶级” ErrorsController,典型的技术是在其前面添加两个冒号。例如:
module Share
class ErrorsController < ::ErrorsController
end
end
答案 1 :(得分:3)
如果父 ErrorsController 存储在其他模块中,则应使用其完整路径。
例如:
module Share
class ErrorsController < OtherModule::ErrorsController
end
end