设置ability.rb但仍然有管理员能够删除用户?

时间:2013-07-17 13:08:45

标签: ruby-on-rails ruby permissions action

我在Ruby和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将会删除?

抱歉...第一篇文章我有一个错字

2 个答案:

答案 0 :(得分: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

希望这会有所帮助。

答案 1 :(得分:0)

试试这个

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