2017-10-02 7 views
0

Rails 5 및 Devise에 Ajax 등록이 있습니다. 이 registrations_controller.rb입니다 : 내가 resource.errors를 입력으로 존재하고 디버그 이메일을 등록하려고 할 때Devise, Rails 5, 이메일에 대한 사용자 정의 오류

build_resource(sign_up_params) 
byebug 
    if resource.save 
     if resource.active_for_authentication? 
      sign_up(resource_name, resource) 
      return render :json => {:success => true} 
     else 
     expire_data_after_sign_in! 
      return render :json => {:success => true} 
     end 
    else 
     return render :json => {:success => false} 
    end 

byebug으로, 나는 참조 : I 콘솔 resource.errors.messages 입력하면

<ActiveModel::Errors:0x00000007254a48 @base=#<User id: nil, email: "[email protected]", role_id: 0, created_at: nil, updated_at: nil>, @messages={:email=>["has already been taken"]}, @details={:email=>[{:error=>:taken, :value=>"[email protected]"}]}>

, 내가 볼 이 :

{:email=>["has already been taken"]}

if resource.errors.details[:email][0][:error] == :taken 
    return render :json => {:error=> "Email already in use."} 
end 

또는 모델 user.rb에 추가 :나는 메시지를 가져 오거나, 예를 들어 설정하는 방법을 알고

validate :email_uniqueness 

def email_uniqueness 
    self.errors.add(:email, 'Email is already in use') if User.where(:email => self.email).exists? 
end 

을,하지만 난 기본 오류 메시지를 변경하고 싶습니다. 이 메시지에 대한 전체 프로젝트를 수색했지만 아무것도 발견하지 못했습니다.

전자 메일이 이미 사용 중일 때 Devise에서 오류 메시지를 어떻게 변경합니까?

+0

체크 아웃나요? – Anton

답변