加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – Cancan Devise,是管理员管理用户的最佳方式

发布时间:2020-12-17 02:03:46 所属栏目:百科 来源:网络整理
导读:我正在开发一个应用程序,公司管理员应该能够在他的公司中创建和更新用户. (用户还可以独立创建和更新其帐户). 我使用Devise和Cancan进行注册和权限管理.我配置了Devise以获得所需的注册和用户更新过程.我为管理视图创建了一个命名空间. 我的管理员控制器(/ap
我正在开发一个应用程序,公司管理员应该能够在他的公司中创建和更新用户. (用户还可以独立创建和更新其帐户).

我使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读