无法覆盖 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 之后编写您的代码。