[Rails] scope/namespace/module를 마주하고

안녕하세요.
PF 제작 중namespace/scope/module 등 명칭 공간에서 그룹을 나눌 수 있는 기회가 있기 때문입니다.
출력하고 싶습니다.

namespace

namespace URL은 지정된 경로를 지정하고 파일로 구성된 경로를 지정할 때 사용됩니다.
맞춤형URI PatternController#Action을 동시에 만들고 싶을 때 사용하겠다는 것이다.
아래처럼 경로를 설정하면...
namespace :admin do
  resources :articles
end
경로는 다음과 같습니다.
Prefix
Verb
URI Pattern
Controller#Action
admin_articles
GET
/admin/articles
admin/articles#index
new_admin_article
GET
/admin/articles/new
admin/articles#new
* 아래 생략
보통resources :articles이라면 위쪽admin 부분은 추가로 기재되지 않았다.namespace를 사용하여 app/controllers/admin 디렉토리 아래에서 컨트롤러를 그룹화할 수 있습니다.

scope

scope URL에서 경로를 지정하고 파일 구성을 변경하지 않으려는 경우 사용합니다.
맞춤형URI Pattern으로만 사용하고 싶다는 것이다.
아래처럼 경로를 설정하면...
scope :admin do
  resources :articles
end
도 생략된 형식으로 기술할 수 있다.
resources :articles, path: '/admin/articles'
다음과 같은 경로입니다.
Prefix
Verb
URI Pattern
Controller#Action
articles
GET
/admin/articles
articles#index
new_article
GET
/admin/articles/new
articles#new
* 아래 생략
이번에는 URI Patternadmin만 부가했다.따라서 app/controllers는 디렉터리 아래의 컨트롤러임을 알 수 있다.

module

module(scope module) URL의 경로를 변경하지 않고 파일 구성을 지정할 때 사용합니다.
변경Controller#Action할 때만 사용하겠다는 것이다.
아래처럼 경로를 설정하면...
scope module: :admin do
  resources :articles
end
생략 형식으로 기술할 때 다음과 같다.
resources :articles, module: 'admin'
라우트:.
Prefix
Verb
URI Pattern
Controller#Action
articles
GET
/articles
admin/articles#index
new_article
GET
/articles/new
admin/articles#new
* 아래 생략
작용은 많이 다르지만 헷갈리기도 쉽다
내가 잘 컨트롤할게.
끝까지 읽어주셔서 감사합니다.

참고 자료


컨트롤러 네임스페이스 및 라우팅 -Rils 가이드
【Rails】 루트 중의namespace/scope/module에 대한 차이와 사용 방법
Rails의routing에서scope/namespace/module의 차이

좋은 웹페이지 즐겨찾기