2012-01-10 1 views
2

난 내 레일 앱에 friendly_id을 사용하고 있습니다.문자열에 숫자 만 포함되는지 확인

숫자 ID로 페이지를 방문 할 수 없도록하고 싶습니다.

페이지는이 같은 접근 - www.myurl.com/myfriendlyidstub

페이지는이 같은 접근해서는 안 - www.myurl.com/12345

(12345 myfriendlyidstub의 ID입니다) friendly_id의 문서에서이 작업을 수행 할 수있는 방법이 없습니다. 어떻게이 '각각 is_numeric'방법을 쓰는가

-

그래서 나는 PARAM이

def edit 
    if params[:id].is_numeric? #I need to know how to write this method 
     not_found #not_found redirects to a 404 
    end 
    #rest of the edit action 
end 

두 질문에 숫자인지 여부를 확인하기 위해 내 컨트롤러 방법을 추가 고려 중이 야?

이 작업을 수행하는 좋은 방법입니까? 어떤 함정이라도 볼 수 있습니까?

+1

[이 링크] (http://railsforum.com/viewtopic.php?id=19081)를 확인하시기 바랍니다. 나는 당신이 원한다면 i *가 * 당신이 노선 자체에서 정규식을 할 수 있다고 생각하지만 그러한 접근법에 대한 문제를 보지 못한다. – aishwarya

+0

또 다른 주목할 점은 허용 목록을 블랙리스트에 추가하는 것보다 화이트리스트가 더 효과적이라는 것입니다. 유효하지 않은 입력을 지정하는 것보다는 유효한 입력을 지정하십시오. –

답변

4

모든 방법으로 붙이기 전에 before_filter을 사용하고 싶습니다.

segment constraint 라우팅을 구성 할 수도 있습니다. 당신이 바로 루트 '/'후 영구 링크로 사용자 이름을 갖고 싶어처럼

0

그것은 당신이 친절한 설정이 올바르게은 이름으로 표시하는 경우는 그 후

config/route.rb 
... 
match '/:id' => 'controller#show' 
... 

내가 생각 ... 소리 이드 대신.

btw friendly_id를 찾아 주셔서 감사합니다. 제 프로젝트와 비슷한 것을 찾기 시작했습니다.

도움이되는지 알려주세요.

+0

원래 설정 방법입니다.하지만 내 이슈는 실제 ID를 가리고 싶었습니다. 나는 받아 들인 대답에 따라 행동했다. Friendly_id는 훌륭하게 작동합니다. git hub의 repo 소유자는 매우 유용합니다. – Finnnn