Question

J'ai une application Ruby de base que je suis bâtiment avec Sinatra, DataMapper et a l'authentification des utilisateurs en utilisant OAuth. Quand je reçois les données de retour du service OAuth, enregistrer un enregistrement d'un nouvel utilisateur dans un sqlite3 db.

Ce que je ne sais pas comment faire est de savoir comment s'y prendre pour vérifier l'enregistrement utilisateur n'existe pas déjà sur la table de base de données utilisateur. Je peux utiliser pour traverser vérifier si l'uid est déjà stocké id unique (UID) de l'utilisateur, mais je ne suis pas sûr où faire.

J'ai 2 classes et / rappel itinéraire. utilisateur classe est le modèle db et un Authentification classe a des méthodes assorties pour la connexion au OAuth, et / rappel itinéraire qui aura le procédé Authentication.save appelé.

Dois-je vérifierai pour un enregistrement existant dans le Authentication.save méthode et retourne un booléen ou autre chose? Créer une nouvelle méthode Authentification qui serait comme Authentication.exists? (Et ce que cela ressemblerait?) Ou devrais-je être vérifier dans le / rappel itinéraire?

Je suis désolé si cela n'a pas été clair à 100%, je suis un moment difficile décrivant mon problème et je suis un débutant absolu Ruby ...

Était-ce utile?

La solution

Juste avant de créer votre nouvel utilisateur, vous devriez essayer de vérifier si un utilisateur avec le même login et email (par exemple) existe:

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top