Pregunta

Tengo una aplicación básica Ruby que estoy construyendo con Sinatra, DataMapper y tiene autenticación del usuario mediante OAuth. Cuando recibo los datos de nuevo desde el servicio Oauth, guardo un registro de un nuevo usuario en un db sqlite3.

Lo que no sé cómo hacerlo es cómo hacer para verificar el registro de usuario no existe ya en la mesa de la base de datos de usuario. Puedo utilizar la identificación única del usuario (UID) para cruzar comprobar si el UID ya está almacenado, pero yo soy sólo seguro de dónde hacerlo.

Tengo 2 clases y una / devolución de llamada ruta. La usuario clase es el modelo db, y un métodos de autenticación clase ha surtidos para la conexión a la OAuth, y el / callback ruta que tendrá el método Authentication.save que se llama.

¿Debería la comprobación de un registro existente dentro de la Authentication.save método y devolver un valor booleano o alguna otra cosa? Crear un nuevo método en Autenticación que sería como Authentication.exists? (Y lo que se vería eso?) O debería ser corriente dentro de la / devolución de llamada ruta?

Me disculpo si esto no era 100% claro, estoy teniendo un momento difícil describir mi problema y soy un principiante absoluto Rubí ...

¿Fue útil?

Solución

Justo antes de la creación de su nuevo usuario, usted debe tratar de comprobar si existe un usuario con el mismo nombre de usuario y correo electrónico (por ejemplo):

require 'dm-aggregates'

user=User.new
user.login=your_login_data_returned_by_oauth
user.email=your_email_data_returned_by_oauth
# And so on...
user.save if User.count(:login=>user.login, :email=>user.email) == 0
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top