以下是设置:
# app_controller.rb
class AppController; end
# org/app_controller.rb
module Org
class AppController < ::AppController; end
end
# org/admin/app_controller.rb
module Org
class Admin::AppController < AppController; end
end
为什么Org::Admin::AppController
继承自AppController
而不是Org::AppController
,因为类定义是命名空间的?
答案 0 :(得分:6)
这是因为当您打开Org::Admin::AppController
时,Org::AppController
必须未定义,但::AppController
必须已定义。也许您的文件不是必需的&#39;按照你假设的顺序?您可以通过在创建派生类的文件中添加require <file containing base class>
来解决此问题。
(次要风格指南:不要使用::
来引用您要开放定义的类和模块。)
编辑原因:我进行了一些测试,我一定是弄错了。