0

我在 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 可以?

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

4

2 回答 2

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

希望这会有所帮助。

于 2013-07-17T13:20:48.900 回答
0

尝试这个

when "admin_junior"
  cannot :delete, User
  .
  .
when "admin_senior"
  can :delete, User
  .
  .
end
于 2013-07-17T13:24:48.277 回答