2011-12-21 44 views
1

我想在我的應用程序控制器中編寫一個方法,可用於所有控制器。這是一個簡單的角色的事情。rails 3編寫一個控制器方法來檢查什麼類型是current_user

def user_is_admin 
    if current_user.admin == true 
    end 
    end 

如果當前登錄用戶將.admin設置爲true,則此方法應返回true。

然後在我控制我做的: 的before_filter:user_is_admin,:只=> [顯示]

雖然代碼沒有示數,其也沒有保護的網頁被瀏覽。

有什麼想法?

回答

1

如果當前用戶不是管理員,則需要使用before_filter來中斷操作。

def user_is_admin 
    if current_user.admin != true 
     redirect_to <some_other_action> 
     return false 
    end 
end 

請注意,這是檢查current_user不是管理員。 或者,你可以拋出一個異常,或者使錯誤模板而不重定向:

def user_is_admin 
    if current_user.admin != true 
     raise "Admin required" 
    end 
end 

def user_is_admin 
    if current_user.admin != true 
     render :template => 'shared/admin_required' 
     return false 
    end 
end 
0

您的意思是?

def user_is_admin 
    redirect_to "/" unless current_user.admin 
end 
1

你問不同的東西,然後你的代碼做什麼。

你想你的方法做的,是這樣的:

def user_is_admin 
    redirect_to root_url, notice: "You do not have sufficient privileges for that!" unless current_user.admin 
end 

哪裏root_url是在那裏他們將被重定向。你仍然需要before_filter。

+0

感謝您的編輯,不知道爲什麼我沒有那樣輸入:) – andrewpthorp 2011-12-22 02:08:49

相關問題