2016-08-31 1 views
0

저는 자바 개발자입니다.하지만 우리 팀은 제품에 대한 SSO 마이크로 서비스를 레일로 개발하고 있으므로 제가 배우면서 배우고 있습니다.암호를 잊어 버릴 수있는 맞춤 입력란을 추가하는 방법은 무엇입니까?

<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %> 
<%= devise_error_messages! %> 
    <div class="row"> 
     <div class="medium-12 small-12"> 
      <div class="field"> 
       <%= f.label :email, class: 'field-label' %> 
       <%= f.email_field :email, autofocus: true %> 
      </div> 
     </div> 
    </div> 

    <div class="row"> 
     <div class="actions columns medium-12 small-12"> 
      <%= f.submit "Send", id: "send-button" %> 
     </div> 
    </div> 

    <div class="row text-center align-center"> 
     <div class="small-8 small-centered columns"> 
      <br><p id="form-subheading">* For security reasons, we do NOT store your password. We will NEVER send your password via email.</p> 
     </div> 
    </div> 
<% end %> 

그리고 성공적으로 class Users::PasswordsController < Devise::PasswordsController

# POST /resource/password 
def create 
super 
end 
에 다음과 같은 기능을 통해 전달합니다

현재 나는 사용자가이 양식에 자신의 이메일을 입력 할 때 암호 확인을 다시 보내 그것을 설정을 가지고

문제는 우리가 폼에 다음 first_namelast_name 필드를 추가하고, 자신의 이메일 양식을 전송하기 전에 사용자 모델에 대해 그것을 인증 할 필요가 지금이지만, 그 paramete를 무시 rs 전적으로. 분명히 어딘가에 수표가 필요하지만 어디서부터 시작해야할지 모른다.

<div class="row"> 
    <div class="medium-5 small-12"> 
     <div class="field"> 
      <%= f.label :first_name, class: 'field-label' %> 
      <%= f.text_field :first_name %> 
     </div> 
    </div> 
    <div class="medium-6 medium-offset-1 small-12"> 
     <div class="field"> 
      <%= f.label :last_name, class: 'field-label' %> 
      <%= f.text_field :last_name %> 
     </div> 
    </div> 
</div> 

나는 기능에 byebug 문을 넣을 경우 params[:user] 변수가 정보를 포함하고 있기 때문에 그들이 백엔드로 전송받을 알고있다. 양식의 새로운 정보를 검증하는 방법을 모르겠습니다.

이 양식에 대한 사용자 정의 필드 구축에 어떤 도움을 주시면 감사하겠습니다.

답변

0

물론 그래서, 시간을 찾고 후 나는 SO에 게시하고, 나는 즉시 내가 문서에 필요한 손쉽게 찾을 수 있습니다.

# config/initializers/devise.rb 
config.reset_password_keys = [:email] 

하고 해당 필드 유효성을 검사 할 수 있습니다 사용자 모델에서

config.reset_password_keys = [:email, :first_name, :last_name] 
0

로 변경 :

내가하는 데 필요한 밝혀졌습니다. 다음과 같은 형식이 있습니다.

validates :first_name, presence: true 
validates :last_name, presence: true 

양식을 보낸 후 모델에서 유효성을 검사합니다. first_name 및/또는 last_name이 입력되지 않으면 양식으로 돌아갑니다.

Read this for more information about rails validations 또한 컨트롤러에 당신은 PARAMS을 받아 들여야한다 (아직 설치하지 않을 경우). 사용자 컨트롤러에서

def user_params 
    params.require(:user).permit(:first_name, :last_name) 
end 

당신은 아마 이미 단지 first_name과에 last_name을 추가 def user_params 있습니다. 당신은 평소처럼 그 PARAMS에 액세스 할 수 있습니다

후. (예는 다음 create 기능에 @user = User.new(user_params) 당신은 @user.first_name을해야합니다.)

관련 문제