programing

Rails 및 Devise의 강력한 매개 변수

firstcheck 2021. 1. 14. 08:32
반응형

Rails 및 Devise의 강력한 매개 변수


루비 2.0.0p0 및 Rails 4.0.0.beta1과 함께 devise의 rails 4.0 브랜치를 사용하고 있습니다.

이것은 내가 올바른 방법으로하고 있는지, 아니면 내가해야 할 다른 일이 있는지 확인하는 질문입니다. Rails 4.0으로 이동하는 많은 사람들이 비슷한 문제를 검색 한 후 동일한 문제에 직면하고 있다고 확신합니다.

다음 링크를 읽었습니다.

이제 devise를 사용하여 User 모델을 만들었고 위의 요점을 사용하여 다음 컨트롤러를 만들었습니다 (그리고 내 경로 파일에 포함했는지 확인했습니다). 내 추가 매개 변수는 first_name과 last_name입니다.

class Users::RegistrationsController < Devise::RegistrationsController
  def sign_up_params
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation)
  end
  def account_update_params
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :current_password)
  end
  private :sign_up_params
  private :account_update_params
end

내가해야 할 일이 더 있습니까? 이것은 attr_accessor를 삭제 한 이후로 지금부터 작업을 수행하는 가장 좋은 방법입니까? 내 양식이 제대로 작동하는 것 같습니다 (신규 및 업데이트 모두). 요지는 "resource_params"를 사용한다고 말했지만 항상 서버 로그에 "Unpermitted parameters"오류가 발생했습니다.


Devise의 Rails4 브랜치에 대한 최신 업데이트에 감사드립니다. 실제로 'resource_params'를 삽입 할 필요가 없습니다.

저는 완전히 새로운 Rails4 앱을 만들고 기본적인 Devise 설치 단계를 따랐고 제 앱이 제대로 작동하므로 잘 한 것 같습니다.

그러나 필요한 경우 허용 된 매개 변수와 관련하여 몇 가지 추가 세부 정보를 제공하는 수정 된 요점이 있습니다.

출처 : https://gist.github.com/bluemont/e304e65e7e15d77d3cb9

# controllers/users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController

  before_filter :configure_permitted_parameters

  protected

  # my custom fields are :name, :heard_how
  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) do |u|
      u.permit(:name, :heard_how,
        :email, :password, :password_confirmation)
    end
    devise_parameter_sanitizer.for(:account_update) do |u|
      u.permit(:name,
        :email, :password, :password_confirmation, :current_password)
    end
  end
end

Rails 5, Devise 4의 경우 다음을 사용하십시오.

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

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name, :email, :password, :password_confirmation])
  end
end

참고


It works very nice with adding an module in config/initializers with all parameters like this

module DevisePermittedParameters
  extend ActiveSupport::Concern

  included do
    before_filter :configure_permitted_parameters
  end

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :email, :password, :password_confirmation) }
  end

end

DeviseController.send :include, DevisePermittedParameters

ReferenceURL : https://stackoverflow.com/questions/16379554/strong-parameters-with-rails-and-devise

반응형