Domanda

Ho un app di base di Ruby che sto costruendo con Sinatra, DataMapper e ha l'autenticazione degli utenti utilizzando OAuth. Quando ricevo i dati indietro dal servizio Oauth, risparmio un record di un nuovo utente in un db sqlite3.

Quello che non so come fare è come fare per verificare il record utente non esiste già sul tavolo database degli utenti. Posso utilizzare l'ID univoco dell'utente (UID) per attraversare verificare se l'UID è già memorizzato, ma io sono solo sicuro dove fare questo.

Ho 2 classi e un / callback percorso. Il utente di classe è il modello db, e un metodi di autenticazione di classe è assortiti per il collegamento al OAuth, e la / callback percorso che avrà il metodo Authentication.save chiamato.

Dovrei controllare per un record esistente all'interno del Authentication.save metodo e restituire un valore booleano o qualcos'altro? Creare un nuovo metodo in Autenticazione , che sarebbe come Authentication.exists? (E quello che vorrei che assomiglia?) O dovrei essere il controllo all'interno del / callback percorso?

Mi scuso se questo non era chiaro al 100%, sto avendo un momento difficile descrivere il mio problema e sono un principiante assoluto rubino ...

È stato utile?

Soluzione

Appena prima di creare il nuovo utente, si dovrebbe cercare di controllare se un utente con la stessa login e-mail (per esempio) esiste:

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top