2012-03-06 2 views
1

나는 cancan을 사용 권한으로 사용하고 있으며 사용자가 자신의 프로필/사용자 페이지를 방문 할 때 다른 사용자를 볼 수 없도록하고 싶습니다. 사용자는 자신을 볼 수 있어야합니다. 내 ability.rb 파일에서Cancan 사용자 권한이 필요하십니까?

나는 위는 일반적으로 작동하지만 사용자가 기본 모델이기 때문에 내가 해결할 수있는 방법을 잘 모르겠습니다 내가

class UsersController < ApplicationController 
before_filter :authenticate_user! 
load_and_authorize_resource 

def index 
    @user = current_user 
end 

def show 
    @user = User.find(params[:id]) 
end 
end 

을 내 users_controller에서

class Ability 
include CanCan::Ability 

def initialize(user) 
    user ||= User.new # guest user (not logged in) 

    if user.role? :admin 
    can :manage, :all 
    elsif user.role? :rookie 
    can [:update, :destroy], [Album, Photo, User] 
    can :read, :all 
    end 

    can :manage, Album, :profile => { :user_id => user.id } 
    can :manage, Photo, :profile => { :user_id => user.id } 
    can :manage, Video, :profile => { :user_id => user.id } 
    can :manage, Comment, :blog => { :profile => { :user_id => user.id } } 
    can :manage, User, :id => user.id 
end 
end 

이 이.

#ability.rb: 
can :manage, User, :id => user.id 

답변

1

을 제공합니다 역할 : 신인. 그렇다면 전체 : 신참 사용자을 읽을 수 있습니다. 모든 리소스를 읽을 수 있습니다.

+0

근무했지만 다른 사용자가 볼 수 있습니까? 어떤 제안? – coletrain

+0

당신의 역할은 무엇입니까? –

+0

내 역할은 신인 및 관리자입니다. – coletrain

1

나는 대부분의 사용자 역할 로 시작하는 것이 가정입니다 : 신인하고있는 사용자를위한 기능

can :read, :all 

이 레일 그것은해야 나에게 오류

undefined method `user_id'