2013-02-10 7 views
0

저는 현재 사용자 : is_logged입니까? 내 컨트롤러에 사용자가 기록되었는지 확인하지만 일부 영역은 로그인하지 않은 사용자에게만 표시되도록합니다.Before_filter가 뒤집 혔습니까?

private 
    def is_logged? 
    !!current_user 
    end 

    private 
    def current_user 
    @current_user ||= User.find(session[:user_id]) if session[:user_id] 
    end 

    helper_method :is_logged? 
    helper_method :current_user 

before_filter가 그 반대를 평가할 수있는 방법이 있습니까?

현재 : is_logged? true를 반환하고 그렇지 않으면 false를 반환합니다. 기록되지 않은 경우 true를 반환하고 반대의 경우는 true를 반환합니다.

감사합니다.

답변

0

나는 이것을 단순화하는 방법이있을 것이라고 확신하지만, 학습 목적으로는 이것이 가능할 것이라고 생각합니다.

def not_logged_in? 
    if defined? current_user 
    current_user.nil? 
    else 
    true 
    end 
end 
1

난 당신이 단지 사용자 로그인 여부를 결정하기위한 하나의 방법을 유지하고 logged_in?not_logged_in? 방법으로 코드를 중복되지 제안했다. 아마도 뭔가 같은 단순함과 가독성을 위해 :

if logged_in? 
    # do something for logged in users 
end 

그리고 가 누구인지 사용자와 특별히 뭔가를 그런 다음

private 

    def logged_in? 
    !current_user.nil? 
    end 
    helper_method :logged_in? 

, 당신은 로그인 을하는 사용자와 뭔가를 할 때 아니 로그인 :

unless logged_in? 
    # do something for users who are not logged in. 
end