我想让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模型
答案 0 :(得分:1)
从:registerable
模型中移除Admin
将移除Devise::RegistrationsController
的所有路线助手,例如:edit_admin_registrations_path
。
您需要将:registerable
保留在Admin
模型中,并覆盖Devise::RegistrationsController
以限制对new
和create
操作的访问权限。
创建一个包含以下内容的新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' }
这样您就可以限制用户创建帐户,但允许现有帐户修改其信息。