【发布时间】:2017-09-16 21:52:03
【问题描述】:
我按照这个link 来了解如何让管理员批准新用户。我的User 模型上有一个approved 属性,它是一个布尔值。
2 个问题 - 1) 当我以管理员身份登录并通过 link_to "Edit", edit_user_path(user) 转到编辑用户以更改批准的用户时 - 网址适用于正确的用户,但随后更新操作尝试更新当前管理员用户。
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
【问题讨论】:
标签: ruby-on-rails devise cancan