我在我的Rails 5项目中使用Devise,我想暂时禁用新用户注册。我知道我可以删除视图的链接,或编辑路由文件来完成此任务,但这需要更改具有新部署的代码。我想在我的管理控制台中添加一个选项,以禁止新用户注册一段时间。
我已启用此功能,但这是一个hacky工作。当我禁用人们注册的能力时,我目前所做的就是在设计视图中隐藏“新用户注册”链接。任何知道默认路径的人都可以解决这个问题。
如何在运行时更改此功能?
答案 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
全局变量来检查是否允许新注册。您可以在管理员操作后打开/关闭此功能。或者,如果您将这些信息存储在数据库中并进行查询,那将是一件好事。