繁体   English   中英

Devise和CanCan不能:销毁用户

[英]Devise and CanCan cannot :destroy User

我有一个使用CacCan和Devise的应用程序。 我正在让Devise处理用户销毁操作

路线

DELETE /users(.:format)    devise/registrations#destroy

我的控制器

class UsersController < ApplicationController
  skip_before_filter :authenticate_user!, :only => :portfolio

  def index
    redirect_to dashboard_user_path(current_user)
  end

  def dashboard
    ...
  end

  def portfolio
  end
end

我的能力

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new
    if user.role?('Administrator')
      can :access, :rails_admin
      can :dashboard
      can :manage, :all
    else
      cannot :destroy, User
      can :read, :all
      ...
    end
  end
end

上面的这段代码不起作用。 不是管理员的用户仍然可以删除该用户。 我假设原因是我没有UsersController#destroy方法。

所以我的问题是,如何使非管理员用户无法删除用户?

任何帮助将不胜感激。

谢谢

在我看来,您定义了能力但根本没有使用它们。

我建议至少读这个 (宝石有非常有用的信息的范围维基所以它值得阅读所有文章)。 我更喜欢使用功能强大的load_and_authorize_resource但在您的情况下,也许足够authorize! (代码未经测试!)

def destroy
  @user = User.find(params[:id])
  authorize! :destroy, @user
  ...
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM