设计/ Rails – 如何只允许管理员为其他人创建帐户?

我正在使用设计作为我的身份validation解决方案,现在我正在考虑授权。 在我的项目中,我(管理员)是唯一有权为其他人创建帐户的人。

我想知道是否有办法在没有太多黑客的情况下做到这一点。 实际上,如果Devise已经登录,则Devise不允许用户访问注册页面。

感谢您的建议!

您可以结合Devise尝试rails_admin gem来处理任何特定于管理员的任务。 您需要添加更多代码来设置它,但至少您可以避免在更改与Devise的交互方面破解解决方案。

设置:skip => :registrations还会杀死用户编辑其用户信息的能力。 如果这不是您的意思,您可以改为创建(最小)自定义注册控制器,并仅在保留new_user_registration_path同时删除edit_user_registration_path

 # app/controllers/registrations_controller.rb class RegistrationsController < Devise::RegistrationsController def new # If you're not using CanCan, raise some other exception, or redirect as you please raise CanCan::AccessDenied end end # routes.rb devise_for :users, :controllers => { :registrations => "registrations" } 

执行此操作后,还需要将目录views/devise/registrationsviews/registrations

实际上,在Devise的更高版本中,您可以从模型中删除“可注册”声明,它将为您处理此问题。