我在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将会删除?
抱歉...第一篇文章我有一个错字
答案 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