2017-03-03 2 views
1

더 많은 매개 변수로 등록하고 더 많은 정보 (아직까지 행운은 없음)를 등록하기 위해 기기 등록 방법을 맞춤 설정하려고했지만 항상 Unpermitted parameters: 오류가 발생합니다. 이 Adding extra registration fields with Devisehttps://github.com/plataformatec/devise#strong-parameters을 사용해 보았습니다.등록을 위해 맞춤 매개 변수 추가하기 - 허용되지 않는 매개 변수

외래 키를 사용자 ID로 유지하고 거기에 user_id, display_name, profile_picture과 같은 내용을 넣을 새 테이블을 만들려고했지만 동일한 페이지에서 모든 것을 제출하려고 할 때 같은 문제가 발생합니다. devise 컨트롤러).

해결 방법에 대한 의견이 있으십니까? 그 밖의 무엇을 게시해야합니까? 그냥 매개 변수를 허용해야하는 고안 말할 필요가 같은

routes.rb

devise_for :users, controllers: { registrations: 'users/registrations' } 

사용자/regC는

def create 
    build_resource(registration_params) 

    if resource.save 
     if resource.active_for_authentication? 
     set_flash_message :notice, :signed_up if is_navigational_format? 
     sign_up(resource_name, resource) 
     respond_with resource, :location => after_sign_up_path_for(resource) 
     else 
     set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format? 
     respond_with resource, :location => after_sign_up_path_for(resource) 
     end 
    else 
     clean_up_passwords 
     respond_with resource 
    end 
    end 

private 
    def registration_paramss 
    params.require(:user).permit(:email, :display_name, :terms_of_services, :profile, :password, :password_confirmation) 
    end 
+0

당신의 장치 구성을 게시하십시오. – 31piy

+0

@ 31piy 업데이트 됨 –

+0

어떤 장치 버전을 사용하고 있습니까? 재정의 된 컨트롤러 (사용자/등록)를 우리에게 보여줄 수 있습니까? 생성 작업 및 가입 매개 변수를 사용자 정의하는 부분. – gkats

답변

6

같습니다. 기본적으로 devise는 전자 메일 (또는 구성에 따라 사용자 이름), 암호 및 password_confirmation 매개 변수를 허용합니다. 더 추가하기 만하면됩니다.

devise documentation은 이것을 설정하는 "게으른 방법"을 제안합니다.

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

    protected 

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

문서는

If you have nested attributes (say you're using accepts_nested_attributes_for), then you will need to tell devise about those nestings and types. 

당신이 registrations#create 조치를 재정의해야하는 경우에만 당신이 유증에 대한 사용자 정의 경로를 제공해야한다고 말한다. 이 경우 sign_up_params 메서드도 재정의해야합니다.

class Users::RegistrationsController < Devise::RegistrationsController 
    def create 
    # Your custom code here. Make sure you copy devise's functionality 
    end 

    private 

    # Notice the name of the method 
    def sign_up_params 
    params.require(:user).permit(:display_name, :email, :password, :password_confirmation) 
    end 
end 

본질적으로, 당신은 당신의 가입 양식을 컨트롤러에 강한 매개 변수를 구성하는 방법을 알아 내기 위해 매개 변수를 게시하는 방법을 조사해야 할 것이다. strong parameters 구문을 반드시 읽으십시오.

희망이 있습니다.

+0

나는 당신이 제안한대로 행동했다. 같은 오류. –

+0

실제로 문제는 SessionsController 내에 있습니다. 사용자를 생성하려고 시도하면 로그인이 시도되고 세션 컨트롤러는 매개 변수가 허용되지 않는 것으로 간주합니다. 세션 컨트롤러도 역시 수정해야합니까? 두 가지 해결책 모두 그 문제로 끝납니다. –

+0

': sign_in'에 대한 매개 변수를 지정하여이를 시도 할 수 있습니다. 하지만 이상하게 보일 수 있습니다. 내가 알기로는 리디렉션하지 않으면 사용자에게 가입하기 때문입니다. 이 오류는 오류입니까, 경고입니까? 등록이 제대로 작동하고 모델이 저장 되었다면 허용되지 않은 매개 변수 경고에 신경 쓰지 않아도됩니다. – gkats

2

Devise 4.2.0의 경우 키에 값을 추가하여 사용자 테이블의 추가 매개 변수를 허용 목록에 추가 할 수 있습니다. 기본적으로 devise는 당신에게 지금 당장 해설 할 코멘트를줍니다. 아래에 내가 추가했습니다 :avatar

# If you have extra params to permit, append them to the sanitizer. 
    def configure_sign_up_params 
    devise_parameter_sanitizer.permit(:sign_up, keys: [:attribute, :avatar]) 
    end