2つの名前空間があり、それぞれに独自のコントローラークラスとプレゼンタークラスがあります。
Member::DocumentsController
Member::DocumentPresenter
Guest::DocumentsController
Guest::DocumentPresenter
両方のプレゼンターはから継承し::DocumentPresenter
ます。
コントローラは、名前空間を指定せずにそれぞれのプレゼンターにアクセスします。例:
class Guest::DocumentsController < ActionController::Base
def show
DocumentPresenter.new(find_document)
end
end
これは通常、同じ名前空間内でプレゼンターを呼び出します。ただし、開発環境では、ベース::DocumentPresenterが使用されていることがあります。
原因は、ベース:: DocumentPresenterがすでにロードされているためだと思われます。そのため、Railsクラスの自動ロードはわざわざそれ以上調べる必要はありません。これはおそらくそうですか?実稼働環境でも発生する可能性はありますか?
私は2つの解決策を考えることができます:
- 基本クラスの名前をDocumentPresenterBaseに変更します
- コントローラファイルに適切なプレゼンターファイルを明示的に要求する
より良い解決策はありますか?