我正在开发一个应用程序,公司管理员应该能够创建和更新他公司的用户。(用户也可以独立地创建和更新他们的账户)。
我使用了 Devise 和 Cancan 进行注册和权限管理。我配置了 Devise 来获取所需的注册和用户更新过程。我为管理员视图创建了一个命名空间。
我的管理员控制器(/app/controllers/admin/base_controller.rb)如下所示:
class Admin::BaseController < ApplicationController
authorize_resource :class => false
layout 'admin'
def dashboard
end
end
除了我的“常规”用户控制器外,我还有一个专门用于管理管理员用户的控制器(/app/controllers/admin/users_controller.rb)和相关视图。
class Admin::UsersController < Admin::BaseController
...
end
现在,实现与Devise相关的用户管理功能(此时,创建和更新用户)的最清晰方法是什么?
在我的“常规”registrations_controller和confirmations_controller中有一个条件(基于用户权限),以呈现和重定向不同的视图?(参见在不同控制器中使用Devise表单)
还是在我的admin命名空间中创建新的控制器?如果后者更好,需要遵循哪些主要步骤?
Devise :: RegistrationsController
,而应该继承ActionController :: Base
。在这种情况下,你根本不需要使用 Devise,只需通过标准的 RESTful actions 管理用户即可。 - janders223<%= form_for [:admin, @user] do |f| %>
,有关命名空间表单的更多信息,请参考http://guides.rubyonrails.org/form_helpers.html#relying-on-record-identification。至于验证,同样地,Devise完全不涉及其中,你需要在你的模型上自己处理验证。 - janders223