名称:非初始化的常数devisecontroller

发布于 2025-01-24 11:29:26 字数 1247 浏览 3 评论 0原文

我已经尝试将Rails应用程序从6.1升级到7,并且在运行捆绑应用程序之后:UPDATE我收到以下错误:

rails aborted!
NameError: uninitialized constant DeviseController
/Users/martynas/projects/bend/config/initializers/devise_permitted_parameters.rb:17:in `<main>'
/Users/martynas/projects/bend/config/environment.rb:5:in `<main>'
Tasks: TOP => active_storage:update => environment
(See full trace by running task with --trace)

环境:

  • Ruby 2.7.5
  • Rails 7.0.2.4
  • 设计4.8.1

任何提示如何求解如何求解这将很有帮助,谢谢:)

edit

devise_permitty_parameters.rb

module DevisePermittedParameters
  extend ActiveSupport::Concern

  included do
    before_action :configure_permitted_parameters
  end

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys:[:name])
    devise_parameter_sanitizer.permit(:account_update, keys: [:name])
  end

end

DeviseController.send :include, DevisePermittedParameters

emoverition.rb

# Load the Rails application.
require_relative "application"

# Initialize the Rails application.
Rails.application.initialize!

I have tried upgrading my Rails app from 6.1 to 7 and after running bundle app:update I get the following error:

rails aborted!
NameError: uninitialized constant DeviseController
/Users/martynas/projects/bend/config/initializers/devise_permitted_parameters.rb:17:in `<main>'
/Users/martynas/projects/bend/config/environment.rb:5:in `<main>'
Tasks: TOP => active_storage:update => environment
(See full trace by running task with --trace)

Environment:

  • Ruby 2.7.5
  • Rails 7.0.2.4
  • Devise 4.8.1

Any hints how to solve this would be helpful, thanks :)

Edit

devise_permitted_parameters.rb:

module DevisePermittedParameters
  extend ActiveSupport::Concern

  included do
    before_action :configure_permitted_parameters
  end

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys:[:name])
    devise_parameter_sanitizer.permit(:account_update, keys: [:name])
  end

end

DeviseController.send :include, DevisePermittedParameters

environment.rb

# Load the Rails application.
require_relative "application"

# Initialize the Rails application.
Rails.application.initialize!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

埖埖迣鎅 2025-01-31 11:29:26

这可能是Deaise&amp; Rails 7,无论如何,在我的一个项目中,我都使用这种方式:

application_controller.rb

class ApplicationController < ActionController::API
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.require(:account).permit(:sign_up, keys: %i[email password])
  end
end

,在同一文件中
account.rb

class Account < ApplicationRecord
  devise :database_authenticatable, :registerable, :invitable,
         :recoverable, :rememberable, :confirmable, :validatable
     ......
end

class Account::ParameterSanitizer < Devise::ParameterSanitizer
  def initialize(*)
    super
    params.require(:user).permit(:account_update, keys: %i[password current_password])
    params.require(:user).permit(:register, keys: %i[password email])
  end
end

无需创建devise_permitty_parameters.rb

It could be an issue with devise & rails 7, anyway in one of my project i used devise this way:

application_controller.rb

class ApplicationController < ActionController::API
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.require(:account).permit(:sign_up, keys: %i[email password])
  end
end

and in the same file of
account.rb,

class Account < ApplicationRecord
  devise :database_authenticatable, :registerable, :invitable,
         :recoverable, :rememberable, :confirmable, :validatable
     ......
end

class Account::ParameterSanitizer < Devise::ParameterSanitizer
  def initialize(*)
    super
    params.require(:user).permit(:account_update, keys: %i[password current_password])
    params.require(:user).permit(:register, keys: %i[password email])
  end
end

without the need to create devise_permitted_parameters.rb

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文