0

モデル/コントローラーおよびクラスファイルに以下の名前を使用したRailsプロジェクトで作業しています

/app/models/friends/friend.rb
/app/controllers/friends/friends_controller.rb
/lib/classes/friends/friend.rb

すべてのモデル、コントローラー、およびクラス ファイルを application.rb のオートロード パスに追加しようとしました。しかし、クラス名が同じであるため、問題に直面しています。

これをどのように処理すればよいですか?ファイルが名前空間で編成されるような方法でファイルを編成します。

ありがとう、バラン

4

2 に答える 2

1

Rails Engineを使用し、アプリケーションを分離したモジュールに分割することは、はるかに優れたアプローチです。

rails plugin new friends --full --mountable --dummy-path spec/dummy

上記のコマンドは、分離された名前空間を持つ完全にマウント可能なエンジンを生成します。つまり、このエンジンのすべてのコントローラーとモデルは、エンジンの名前空間内で分離されます。たとえば、Post後でモデルFriends::Postは単に ではなく と呼ばれPostます。このアプリをメインの Rails アプリ内にマウントするには、次の 2 つのことを行う必要があります。

Gemfile にエントリを追加

gem 'friends', path: "/path/to/friends/engine"

そして、config/routes.rb にルートを追加します。

mount Friends::Engine, at: "/friends"

このアプローチの詳細については、以下をご覧ください。

于 2013-08-02T12:25:49.753 に答える