2013-07-17 45 views
0

我在Ruby中,并在ability.rb文件的工作,我有:设置ability.rb但仍然可以删除用户管理员?

when "admin_junior" 
    cannot :delete, User 
    . 
    . 
when "admin_senior" 
    can :delete, User 
    . 
    . 
end 

但在我users.rb的文件我有

actions :all, :except => [:edit, :new] 

我认为这样做将有它这样当管理员登录时,admin_junior将无法删除用户,admin_senior将能够删除用户。目前,它既允许查看用户的删除选项,也可以应用它。我如何修改这个以使admin_junior不能删除用户,但admin_senior会?

对不起......第一篇文章我有一个错字

+0

你试过吗?当“admin_junior”不能:删除,用户结束 – Debadatt

回答

0

你必须自己做。可以吗?方法,你可以检查你的current_user的权限。如果你想显示隐藏的链接,你应该这样写:

<% if can? :delete, @user %> 
    <%= link_to "Delete", destroy_user_path(@user), confirm: "Are you sure?", method: delete %> 
<% end %> 

对于未经授权的用户,你可以在你的控制器方法使用的代码,以及:

unauthorized! if cannot? :delete, @user 

,你可以写你喜欢的删除方法这个:

def destroy 
    @user = User.find(params[:id]) 
    unauthorized! if cannot? :delete, @user  
    @user.destroy 
    # other redirecting stuff 
end 

希望这会有所帮助。

+0

对不起......我的意思是admin_junior不能不能 – Anonymous345716253

0

试试这个

when "admin_junior" 
    cannot :delete, User 
    . 
    . 
when "admin_senior" 
    can :delete, User 
    . 
    . 
end 
相关问题