2011-09-18 10 views
0

Devise gem을 사용하여 개인 사용자 프로필을 만들려고합니다. 지금까지 가입, 로그인, 로그 아웃 및 프로파일 기능 작동 편집을했습니다. 문제는 사용자가 로그인 할 때 url users/[username]을 입력하여 다른 모든 사용자를 볼 수 있다는 것입니다. 나는 상대적으로 레일에 익숙하지 않아 세션을 다루는 방법을 여전히 고민하고 있습니다.Devise를 사용하여 개인 프로필 만들기

그래서 다른 사용자와 관련된 사이트 부분에 대한 사용자 액세스를 어떻게 제한합니까? 그리고 더 나은 점은 Devise gem으로 쉽게 해결할 수 있습니까?

즉, i 기호가 사용자 john 인 경우. 사이트/users/john (내 프로필)을 볼 수는 있지만 사이트/사용자/greg는 볼 수 없어야합니다.

감사

답변

4

Devise는이 작업을 수행하지 않지만 언급 된 것처럼 CanCan이 수행합니다. CanCan은 초보자가 할 일을하기 위해 조금 무거울 수 있습니다. 사용자를 확인하는 before_filter를 추가하기 만하면됩니다. 예를 들어

:

class UserProfilesController < ApplicationController 

    before_filter :verify_owner 

    def show 
    @user_profile = current_user.user_profile 
    # or maybe this way, not sure how you have your relations set up 
    # @user_profile = UserProfile.where(:user => current_user) 
    end 

private 

    def verify_owner 
    # assume the route looks like this /user/:username 
    redirect_to root_url unless current_user.username == params[:username] 
    end  

end 
+0

이것은 내가 새로운 기술이 재미 있기 때문에 나는 캉캉 조금을 모색 할 것입니다 생각하지만, 무엇을 찾고 있었다입니다. 감사 – GTDev

관련 문제