2017-04-12 1 views
0

다음 시나리오에 가장 적합한 솔루션에 대해 숙고하고 있습니다.로그인 한 사용자에게 네임 스페이스 컨트롤러 /보기를 할당하는 방법은 무엇입니까?

우리는 모든 사람이 가입/로그인하지 않고 탐색 할 수있는 기본 웹 사이트를 가지고 있습니다. 컨트롤러와보기는 app/controllers 및 app/views/model_name.

사용자가 가입하고 로그인 할 때 (개발자와 함께) app/users /에있는 다른 컨트롤러로 리디렉션되어야하며 이에 따라 app/views/users /에있는 다른보기에 따라야합니다. 내가 아는

, 내보기에서 signed_in?에 따라 다른 파셜을 렌더링 할 수 있고 나는 또한 user 디렉토리 아래에 중첩 된 제어기의 기본 컨트롤러에서 리디렉션 할 수 있습니다,하지만 난 거기에해야 더 일반적인 접근 생각합니다.

혼자서 라우팅을 할 수 있다면 (물론 다른 컨트롤러 /보기 쌍이있는 디렉토리 구조가있는 경우) 궁금합니다.

예 :

app/ 
    controllers/ 
    albums_controller.rb 
    users/ 
     albums_controller.rb 

    views/ 
    albums/ 
     index.rb 
    users/ 
     albums/ 
     index.rb 

편집 : I rewrote 조금 더 구체적이고 after_sign_in_path_for를 오버라이드 (override)에 이루어져 solution으로 지적되었다있는이 게시물. 나는 두 가지 방법의

답변

0

을 생각할 수 있습니다 :

  • ApplicationController의 하위 클래스 만들기 custom constraint

  • redirection을 결합 :

    class SignedOutApplicationController < ApplicationController 
        before_action :redirect_if_signed_in 
        ... 
    end 
    

    을과 서브 만들 모든 비 사용자 컨트롤러에 대한 클래스 대칭을 위해 나는 a를 창조 할 것이다 SignedInController

관련 문제