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 に答える