ruby-on-rails-3 – Cancan Devise,是管理员管理用户的最佳方式
我正在开发一个应用程序,公司管理员应该能够在他的公司中创建和更新用户. (用户还可以独立创建和更新其帐户).
我使用Devise和Cancan进行注册和权限管理.我配置了Devise以获得所需的注册和用户更新过程.我为管理视图创建了一个命名空间. 我的管理员控制器(/app/controllers/admin/base_controller.rb)如下所示: class Admin::BaseController < ApplicationController authorize_resource :class => false layout 'admin' def dashboard end end 除了我的“常规”users_controller之外,我还有一个控制器(/app/controllers/admin/users_controller.rb)以及专门用于管理员用户管理的相关视图. class Admin::UsersController < Admin::BaseController ... end 现在,实现与Devise相关的用户管理功能的最简洁方法是什么(此时,创建和更新用户)? >在我的“常规”registrations_controller和confirmations_controller中有一个条件(基于用户权限)来呈现和重定向不同的视图吗? (参见Devise form within a different controller) 解决方法
这就是你的问题,一旦命名空间或将任何用户管理移动到另一个控制器,你就离开了Devise的范围.因此,在您处于Admin :: UsersController的位置,Devise并不关心您的工作,也没有您所说的“与设计相关的”管理功能.如果您愿意,可以将Admin :: UsersController实现为标准RESTful控制器.
通过这种方式,通过命名空间控制器创建用户,Devise仍将执行诸如确认之类的操作.在以这种方式创建和更新用户时,要记住一件小事.如果您没有设置密码作为管理员,则必须从params散列中删除密码和password_confirmation.为此,创建和更新操作的开始如下所示: if params[:user][:password].blank? params[:user].delete(:password) params[:user].delete(:password_confirmation) end 我在许多应用程序中使用了相同的方法,并且还没有失败. 编辑 namespace :admin do resources :users end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |