无法覆盖 Rails 中的 Devise::RegistrationsController?
Can't override Devise::RegistrationsController in Rails?
我正在尝试在用户登录并注册后设置默认行为。
我尝试使用以下代码创建 registration_controller.rb:
class RegistrationsController < Devise::RegistrationsController
protected
def after_sign_up_path_for(resource)
"/projects"
end
def after_sign_in_path_for(resource)
raise
"/projects"
end
end
这甚至没有让我参加 加薪
作为一种解决方法,我已经设法在 application_controller.rb 中创建一个方法,如下所示:
def after_sign_in_path_for(resource)
"/projects"
end
但我想知道为什么我没有覆盖默认的 RegistrationsController class。
根据 Devise 文档,您可以通过 运行 rails generate devise:controllers [scope]
自定义其配置,例如将范围替换为 users
。
然后它生成这样的文件:
class Users::RegistrationsController < Devise::RegistrationsController
# GET /resource/sign_in
# def new
# super
# end
...
end
您可以取消注释您需要的方法并在 super
之后编写您的代码。
我正在尝试在用户登录并注册后设置默认行为。
我尝试使用以下代码创建 registration_controller.rb:
class RegistrationsController < Devise::RegistrationsController
protected
def after_sign_up_path_for(resource)
"/projects"
end
def after_sign_in_path_for(resource)
raise
"/projects"
end
end
这甚至没有让我参加 加薪
作为一种解决方法,我已经设法在 application_controller.rb 中创建一个方法,如下所示:
def after_sign_in_path_for(resource)
"/projects"
end
但我想知道为什么我没有覆盖默认的 RegistrationsController class。
根据 Devise 文档,您可以通过 运行 rails generate devise:controllers [scope]
自定义其配置,例如将范围替换为 users
。
然后它生成这样的文件:
class Users::RegistrationsController < Devise::RegistrationsController
# GET /resource/sign_in
# def new
# super
# end
...
end
您可以取消注释您需要的方法并在 super
之后编写您的代码。