2013-07-17 107 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 
相關問題