2011-08-27 67 views
0

我在我的控制器的動作,看起來像下面這樣:Rails的:與慘慘寶石發行授權用戶

def show 
    @user = User.find(params[:user_id]) 
    # ... more stuff. 
    end 

注意,我重寫資源的加載作爲康康舞試圖與params[:id]和加載我需要在這裏使用params[:user_id]

我的控制器的頂部有如下定義:

authorize_resource :only => [:show] 

而且在Ability.rb:

class Ability 
    include CanCan::Ability 

    def initialize(user) 
    user ||= User.new 
    can :show, User if :id == user.id 
    end 
end 

我所有的調用都是非法但是。我正在使用設計進行身份驗證,並且我正在驗證傳入初始化的user對象確實是已登錄的用戶。我如何確認已登錄的user只能查看他們要求的配置文件,而沒有其他配置文件?

authorize_resource :only => [:show] 

相反,你需要將其刪除,並授權添加到您的行動或單獨的before_filter:

回答

1

,因爲這是發生在行動之前,你不重寫資源的加載。

def show 
    @user = User.find(params[:user_id]) 
    authorize! :show, @user