2017-10-02 9 views
0

私はAjaxをRails 5とDeviseに登録しています。これは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で、私は以下を参照してください。私は、コンソール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

答えて

関連する問題