我跟着这link找出如何让管理员批准新用户。我在我的User
模型上有一个approved
属性,它是一个布尔值。管理员更改用户的审批状态 - Rails +设计+ Cancancan
2个问题 - 1)当我以管理员身份登录并通过link_to "Edit", edit_user_path(user)
转到编辑用户以更改已批准的用户时 - 该URL适用于正确的用户,但随后更新操作尝试更新当前的管理员用户。
2)我希望有需要的当前密码的覆盖,所以我已经把方法在Registrations
控制器做以下这一点,但得到这个错误:
错误:unknown attribute 'current_password' for User.
所以它不会覆盖current_password
,它不会更新正确的非管理员用户 - 我在哪里出错?
class Ability
include CanCan::Ability
def initialize(user)
current_user ||= User.new # guest user (not logged in)
if current_user.admin == true
can :manage, :all
else
can :manage, User, id: user.id
end
end
end
路线
Rails.application.routes.draw do
devise_for :users, controllers: { registrations: 'registrations' }
resources :users
end
控制器
class RegistrationsController < Devise::RegistrationsController
def update_resource(resource, params)
resource.update_without_password(params) if current_user.admin == true
end
end