gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:25:29 26 4
gpt4 key购买 nike

我正在开发一个应用程序,公司管理员应该能够在其公司中创建和更新用户。 (用户也可以独立创建和更新他们的帐户)。

我使用 Devise 和 Cancan 进行注册和权限管理。我配置了 Devise 以获得所需的注册和用户更新过程。我为管理 View 创建了一个命名空间。

我的管理 Controller (/app/controllers/admin/base_controller.rb) 看起来像这样:

class Admin::BaseController < ApplicationController
authorize_resource :class => false
layout 'admin'

def dashboard
end
end

除了我的“常规”users_controller,我还有一个 Controller (/app/controllers/admin/users_controller.rb)和专用于管理员用户管理的相关 View 。
class Admin::UsersController < Admin::BaseController
...
end

现在,实现与设计相关的用户管理功能(此时,创建和更新用户)的最简洁方法是什么?
  • 在我的“常规”registrations_controller 和confirmations_controller 中有条件(基于用户权限)来呈现和重定向不同的 View ? (参见 Devise form within a different controller)
  • 或者在我的管理命名空间中创建新的 Controller ?如果最新的更好,要遵循的主要步骤是什么?
  • 最佳答案

    这就是您的问题,一旦您命名空间或将任何用户管理移至另一个 Controller ,您就离开了设计的范围。所以在你现在的位置 Admin::UsersController , Devise 不关心你做什么,没有你所说的“与设计相关”的管理功能。您可以实现您的 Admin::UsersController如果您愿意,可以作为标准的 RESTful Controller 。

    通过这种方式,通过命名空间 Controller 创建用户,Devise 仍然会执行确认等操作。在以这种方式创建和更新用户时,需要记住一件小事。如果您没有设置密码作为管理员,您将不得不删除 passwordpassword_confirmation来自 params 哈希。为此,开始您的createupdate Action 看起来像这样:

    if params[:user][:password].blank?
    params[:user].delete(:password)
    params[:user].delete(:password_confirmation)
    end

    我在我的许多应用程序中都采用了这种相同的方法,并且还没有失败。

    编辑
    namespace :admin do
    resources :users
    end

    关于ruby-on-rails-3 - Cancan + Devise,让管理员管理用户的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14077653/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com