在Devise暂时禁用注册

时间:2016-07-16 20:46:17

标签: ruby-on-rails devise

我在我的Rails 5项目中使用Devise,我想暂时禁用新用户注册。我知道我可以删除视图的链接,或编辑路由文件来完成此任务,但这需要更改具有新部署的代码。我想在我的管理控制台中添加一个选项,以禁止新用户注册一段时间。

我已启用此功能,但这是一个hacky工作。当我禁用人们注册的能力时,我目前所做的就是在设计视图中隐藏“新用户注册”链接。任何知道默认路径的人都可以解决这个问题。

如何在运行时更改此功能?

1 个答案:

答案 0 :(得分:4)

关注This链接以覆盖Devise的注册控制器。 基本上你需要覆盖Devise默认的Registeration控制器,并为new & create动作设置一个前置过滤器,检查admin是否允许创建新用户,如果没有,则重定向到root_path或你想要的任何路径。

更改config / routes.rb中的devise_for行以覆盖注册控制器:

devise_for :users, controllers: { registrations: "registrations"}

应用程序/控制器/ registrations_controller.rb:

class RegistrationsController < Devise::RegistrationsController

  before_action :check_new_registration_allowed?, only: [:new, :create]

  protected

  def check_new_registration_allowed?
    redirect_to root_path unless @@allow_new_registration
  end

end

请注意,我使用@@allow_new_registration全局变量来检查是否允许新注册。您可以在管理员操作后打开/关闭此功能。或者,如果您将这些信息存储在数据库中并进行查询,那将是一件好事。