5

He configurado la autenticación en una aplicación de rieles utilizando el dispositivo, siguiendo this tutorial. Funciona muy bien, un usuario puede registrarse y luego iniciar sesión usando un correo electrónico y una contraseña.idear/omniauth iniciar sesión con twitter - validación fallida: el correo electrónico no puede estar en blanco

Ahora quiero agregar la capacidad de registrarse/iniciar sesión usando twitter. Estoy siguiendo la guía del devise wiki

El ejemplo en el wiki usa facebook, lo he cambiado para usar twitter. Se las arregla para ir a Twitter y solicitar autorización, así que estoy seguro de que tengo lo básico en funcionamiento. Sin embargo, una vez que vuelve a mi aplicación, aparece el siguiente error.

Validation failed: Email can't be blank 

Supongo que es porque no proporciono una dirección de correo electrónico.

El código que estoy usando es idéntico (aparte de cambiar facebook a twitter) a eso en los tutoriales, así que no estoy publicando ninguna muestra. Por favor, avíseme si quiere ver algo.

Soy bastante nuevo en los rieles, así que no estoy seguro de cómo depurarlo. ¿Algún consejo sobre cómo debería continuar?

+3

Supongo que esto se debe a que la validación requiere correo electrónico, pero Twitter no proporciona correo electrónico. No tendrá que solicitar un correo electrónico ni pedirle a los usuarios que ingresen manualmente una dirección de correo electrónico. – abraham

Respuesta

3

Hey, simplemente elimine ": validatable" del modelo de usuario n, permitirá el correo electrónico en blanco. ¡¡Trabajó para mí !!

+0

gracias, lo intentaré durante el fin de semana – Finnnn

2

Sé que esta pregunta es antigua, pero sigue apareciendo y una búsqueda rápida en Google descubrió algunos consejos muy malos. Así que aquí ...

La forma correcta de hacer que los correos electrónicos no es opcional para eliminar la interfaz validable de su modelo de usuario, sólo tiene que añadir esto a su lugar:

def email_required? 
    false 
end 

Esto reemplaza el método en el ' clase validable, indicando al código que el correo electrónico es un campo opcional, pero mantiene todo lo bueno que incluye validación, como, ya sabes ... asegurándose de que tiene una contraseña real y cosas así. Cosas que desea conservar.

Por supuesto, si necesita algo realmente loco, debe echar un vistazo al código fuente de la interfaz validable y copiar en las validaciones pertinentes y ajustar según sea necesario, pero para el 99,99% de las personas, el código I ' ve proporcionado anteriormente es probablemente suficiente.

Espero que ayude a un cansado de un jugador.

Cuestiones relacionadas