나는 manager
및 customer
컨트롤러가 있습니다. 특정 관리자에 대한 모든 고객을 나열하고 싶을 때 관리자 show
작업을 통해 수행했습니다 ( 관리자 에게만 해당 되었기 때문). 따라서 if
customer_id가 발견되면 다른 반환 값이 생성됩니다. 그러나 그것은 우리에게 (때로는 거대한) if 가지를 남겼습니다.
Class Api::V1::ManagerController < ApiBaseController
def show
if params.key?[:customer_id]
....
else
....
end
render ..., status: 200
end
디자인을 개선하기 위해 하위 리소스에 대한 추가 네임 스페이스를 도입했습니다. 따라서 특정 관리자의 모든 고객을 나열하기 위해 관리자 이름 공간 아래에 고객 컨트롤러가 있습니다. 고객 리소스와 관련된 관리자와 관련된 모든 작업이 진행됩니다.
Class Api::V1::Manager::CustomerController < Api:ApiBaseController
def show
Manager.find(params[:id] ...
...
render ..., status: 200
end
route.rb 항목은 이제 다음과 같습니다.
get 'manager/:manager_id/customer' => 'manager/customer#show'
새 설정을 테스트 할 때이 오류가 발생합니다.
"error":"uninitialized constant Api::V1::Manager::CustomerController::Manager
Manager.find(..)
라인을 작동중인 다른 리소스로 교체 할 때 왜 관리자 리소스에 더 이상 액세스 할 수 없습니까? 네임 스페이스의 이름과 관련이 있다고 생각하지만 네임 스페이스의 이름을 변경해도 도움이되지 않았습니다.
시험
::Manager.find(params[:id])
접두사 ::
는 루트 네임 스페이스에 액세스합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다