[英]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.