2011-06-13 4 views
0

어떻게하면 좋을까요?루비에서 사용자 정의 "getter"다시 사용하기

def token 
    if authorized? 
    return t.token 
    else 
    raise Error('unauthorized!') 
    end 
end 

def secret 
    if authorized? 
    return t.secret 
    else 
    raise Error('unauthorized!') 
    end 
end 

순간적으로 너무 재사용하는 느낌입니다.

+3

3 번 줄에서'token'을 반환하지만,이 경우 "token"은 메소드 자체를 제외하고는 존재하지 않습니다.이 경우에는 무한 재귀가 발생합니다. 9 행의 'secret'도 마찬가지입니다. 코드를 생략 했습니까? 전체 코드를 사용하면 최상의 답변을 얻을 수 있습니다. –

+0

@ Jordan : 원본에서 '끝'이 없다는 것을 감안할 때 발췌 문장이 컴파일되지 않는다는 것을 의미한다고 생각합니다. –

답변

4

토큰이나 보안 메서드가 호출되기 전에 실행될 필터를 추가하십시오. 당신이 토큰을 제거 할 수

before_filter :check_authorization, :only => [ :token, :secret ] 

그런 다음 사용자가 권한이 있는지 확인하는 방법을 추가,

def check_authorization 
    if !authorized? 
     raise DropboxError('User is not authorized') 
    end 
end 

def token 
    @token 
end 

def secret 
    @secret 
end 

토큰 비밀 그런 :attr_accessor 또는 뭔가 정의 모델의 특성이 이미있는 경우, 그리고 비밀 방법은 모두 논리가없는 단순한 게터이기 때문에 함께 사용합니다.

관련 문제