我跟着這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