2017-09-18 3 views
0

작은 레일 앱이 있지만 저장하도록 사용자에게 구현하려고하는 일부 정보를받는 데 문제가 있습니다. 내 앱은 지금 가입 할 때 사용자 이름과 비밀번호를 묻습니다. 나는이 장치 보석을 사용하여 이것을했다. 그러나 나는 또한 응용 프로그램에 연령 체크를 추가하고 싶습니다. 그리고 이것은 제가 문제를 겪고있는 곳입니다.사용자 생년월일 매개 변수가 저장되지 않습니다.

내 DB 컬럼 (내 스키마)로 설정

t.date "birth_date" 

내보기

<%= f.input :birth_date, required: true, start_year:1900 %> 

에서 내 컨트롤러가 두 부분이 있습니다 :

def create 
    @user = current_user.build(user_params) 
end 

private 

def user_params 
    params.require(:user).permit(:birth_date) 
end 

때마다를 내가 로그인을 시도하고 새 사용자의 birth_date를 작성하십시오. 콘솔에서 확인하면 birth_date가 nil로 설정됩니다. 아무도 내가 이것으로 누락 된 것을 알고 있습니까? 유증 컨트롤러는 별도로이 당신의 UsersController을, 가정

답변

0

당신이 sign_up 프로세스의 일부로서 사용자의 입력 birth_date을하려고 당신은 명시 적으로 birth_date PARAMS 허용 목록을 할 필요가 이러한 목적을 위해 고안 사용하는 가정. registerations_controller 자신을 사용하고

유증
class Users::RegistrationsController < Devise::RegistrationsController 

    before_action :configure_sign_up_params, only: :create 
    before_action :configure_account_update_params, only: :update 

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

    # If you have extra params to permit, append them to the sanitizer. 
    def configure_account_update_params 
     devise_parameter_sanitizer.permit(:account_update, keys: [:bith_date]) 
    end 

end 


#in routes.rb 
devise_for :users, controllers: {registrations: "users/registrations"} 
+0

에서 상속되는 일을

가장 좋은 방법은 헤이 꽃 봉오리, 정말 고마워요! (잠시 동안 잘못된 지점에 컨트롤러를 가지고 있지만, 알아 냈어!) – kdweber89

+0

당신을 도울 수있어서 –

0

(내가 고안 일부 이미 일을 처리와 함께 넘어지고라고 생각), 당신은 DB에 저장해야합니다

def create 
    @user = current_user.update(user_params) 
end 

하지만 당신은해야 할 수도 있습니다 params (문자열)의 생일을 날짜 유형으로 변경하려면 먼저 열 유형에 따라 다르다.

#create보다 실제로는 #update 동작이므로 #update로 이동하는 것도 좋습니다.

0

레지스터 동안 추가 필드를 고안 사용하고 있기 때문에, 나는 당신이, here is link for reference을 고안 덮어

응용 프로그램/컨트롤러/registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController 
    def create 
    super do 
     resource.birth_date = params[:birth_date] 
     resource.save 
    end 
    end 
end 

메이크업을 따를 등록 컨트롤러를 작성해야한다고 생각 너는 또한 노선을 고안해야한다.

app/config/routes.rb

,
devise_for :users, :controllers => {:registrations => "registrations"}