我有两个命名空间,每个都有自己的控制器和演示者类:
Member::DocumentsController
Member::DocumentPresenter
Guest::DocumentsController
Guest::DocumentPresenter
两个演示者都继承自::DocumentPresenter
.
控制器在没有指定命名空间的情况下访问它们各自的演示者,例如:
class Guest::DocumentsController < ActionController::Base
def show
DocumentPresenter.new(find_document)
end
end
这通常会在同一命名空间中调用演示者。但是有时在开发环境中我看到 base :: DocumentPresenter 正在被使用。
我怀疑原因是 base ::DocumentPresenter 已经加载,因此 Rails 类自动加载不会费心再看。有可能是这种情况吗?它也可以在生产环境中发生吗?
我可以想到两个解决方案:
- 将基类重命名为 DocumentPresenterBase
- 在控制器文件中明确要求适当的演示者文件
有更好的解决方案吗?