Rails의 중첩 된 네임 스페이스가 네임 스페이스와 동일한 이름의 모델에 액세스하는 중 오류 발생

방랑자

나는 managercustomer컨트롤러가 있습니다. 특정 관리자에 대한 모든 고객을 나열하고 싶을 때 관리자 show작업을 통해 수행했습니다 ( 관리자 에게만 해당 되었기 때문). 따라서 ifcustomer_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(..)라인을 작동중인 다른 리소스로 교체 할 때 왜 관리자 리소스에 더 이상 액세스 할 수 없습니까? 네임 스페이스의 이름과 관련이 있다고 생각하지만 네임 스페이스의 이름을 변경해도 도움이되지 않았습니다.

그리고 Andreasson

시험

::Manager.find(params[:id])

접두사 ::는 루트 네임 스페이스에 액세스합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관