Rails 및 Devise의 강력한 매개 변수
루비 2.0.0p0 및 Rails 4.0.0.beta1과 함께 devise의 rails 4.0 브랜치를 사용하고 있습니다.
이것은 내가 올바른 방법으로하고 있는지, 아니면 내가해야 할 다른 일이 있는지 확인하는 질문입니다. Rails 4.0으로 이동하는 많은 사람들이 비슷한 문제를 검색 한 후 동일한 문제에 직면하고 있다고 확신합니다.
다음 링크를 읽었습니다.
- 고안 및 강력한 매개 변수
- https://gist.github.com/kazpsp/3350730
- https://github.com/plataformatec/devise/tree/rails4#strong-parameters
이제 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
'programing' 카테고리의 다른 글
d3.js의 노드 중앙에 레이블 배치 (0) | 2021.01.14 |
---|---|
ggplot2의 막대 그림에서 막대 사이의 공간을 늘리는 방법은 무엇입니까? (0) | 2021.01.14 |
/ dir 및 / dir /과 같이 후행 슬래시가 있거나없는 .gitignore 규칙의 차이점 (0) | 2021.01.14 |
데이터 세트를 가져올 때 문제 :`Error in scan (…) : line 1 did not have 145 elements` (0) | 2021.01.14 |
Xcode 5 앱 제출 문제 (0) | 2021.01.14 |