私は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のエラーメッセージを変更するにはどうすればよいですか?
を使用すると、ロケールファイルをチェックアウトしましたか? – Anton