私はmanager
とcustomer
コントローラを持っています。 特定のマネージャのすべての顧客をリストしたいときは、マネージャshow
のアクション(マネージャに固有のものだったため)を使用していました。したがってif
customer_idが見つかった場合、別の戻り値が生成されます。しかし、それは枝があれば(時には巨大な)私たちを残しました。名前空間と同じ名前のモデルにアクセスしているレールのネストされた名前空間
Class Api::V1::ManagerController < ApiBaseController
def show
if params.key?[:customer_id]
....
else
....
end
render ..., status: 200
end
私のデザインを改善するために、私はサブリソース用に追加の名前空間を導入しました。だから、特定のマネージャーのためにすべての顧客をリストするために、私はマネージャー名空間の下にカスタマーコントローラーを持っています。顧客リソースに関連するマネージャに固有のすべてのアクションが実行されています。私は別のリソースそれでManager.find(..)
ラインを交換するとき
"error":"uninitialized constant Api::V1::Manager::CustomerController::Manager
今、このエラーを私が受け取る新しいセットアップをテストする場合
Class Api::V1::Manager::CustomerController < Api:ApiBaseController
def show
Manager.find(params[:id] ...
...
render ..., status: 200
end
routes.rbをエントリには、この
get 'manager/:manager_id/customer' => 'manager/customer#show'
のように今見えますもう何もマネージャーリソースにアクセスできないのですか?私はそれが名前空間の名前と関係があると思うが、名前空間の名前を変更しても役に立たなかった。
「マネージャ」はどこに定義されていますか? 'app/models/manager.rb'またはサブフォルダにありますか?また、 'manager'のクラス宣言を提供できますか? –
ねえ、それは 'app/model/manager.rb'で定義されています。クラス宣言の意味は? – theDrifter
ファイルの最初の行は通常 'クラスマネージャ<...' –