更改设备管理员的密码,无需:可注册

时间:2016-02-24 17:18:41

标签: ruby-on-rails devise

我想让Devise Admin无法注册,但当我从admin.rb中取出:registerable时,edit_admin_registration_path无效。在这种情况下,管理员如何更改他的电子邮件/密码?

class Admin < ActiveRecord::Base
  devise :database_authenticatable,
         :recoverable, :timeoutable, :registerable

错误:

undefined local variable or method `edit_admin_registration_path' for #<#<Class:0x8cf7b40>:0x8cf5278>

注意:我有2种不同的Devise模型

1 个答案:

答案 0 :(得分:1)

:registerable模型中移除Admin将移除Devise::RegistrationsController的所有路线助手,例如:edit_admin_registrations_path

您需要将:registerable保留在Admin模型中,并覆盖Devise::RegistrationsController以限制对newcreate操作的访问权限。

创建一个包含以下内容的新registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController
  def new
    redirect_to root_path
  end

  def create
    redirect_to root_path
  end
end

在你的routes.rb告诉Devise使用你的注册控制器。

devise_for :admins, controllers: { registrations: 'registrations' }

这样您就可以限制用户创建帐户,但允许现有帐户修改其信息。