对于Ruby类扩展自身但在模块下有效吗?

时间:2018-11-18 23:07:09

标签: ruby

让Ruby类扩展自身,但是在一个单独的模块下,这是有效的语法吗?例如,我有一个ErrorsController类。

class ErrorsController < ApplicationController
 ....
end

但是我想在模块下有不同的行为。

class Share::ErrorsController < ErrorsController
 ....
end

这里ErrorsController扩展了ErrorsController,效果很好。但是后来我写了很长的文字:

module Share
  class ErrorsController < ErrorsController
  end
end

有时候似乎有问题。

2 个答案:

答案 0 :(得分:5)

要明确引用“顶级” ErrorsController,典型的技术是在其前面添加两个冒号。例如:

module Share
  class ErrorsController < ::ErrorsController
  end
end

答案 1 :(得分:3)

如果父 ErrorsController 存储在其他模块中,则应使用其完整路径。
例如:

module Share
  class ErrorsController < OtherModule::ErrorsController
  end
end