2011-12-21 31 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

相关问题