Pergunta

Eu tenho um aplicativo Ruby básico que estou construindo com Sinatra, Datamapper e tem autenticação de usuário usando o OAuth. Quando recebo os dados de volta do serviço OAuth, economizo um registro de um novo usuário em um sqlite3 dB.

O que não sei como fazer é como verificar o registro do usuário já não existe na tabela de banco de dados do usuário. Eu posso usar o ID exclusivo do usuário (UID) para verificar se o UID já está armazenado, mas não tenho certeza de onde fazer isso.

Eu tenho 2 aulas e um /ligue de volta rota. o Do utilizador classe é o modelo de banco de dados e um Autenticação a classe tem métodos variados para se conectar ao OAuth, e o /ligue de volta rota que terá o método de autenticação.Save sendo chamado.

Devo estar checando um registro existente dentro do Authentication.Save Método e retornar um booleano ou algo mais? Criar um novo método em Autenticação isso seria como autenticação. Existe? (e como seria isso?) Ou devo verificar no /ligue de volta rota?

Peço desculpas se isso não estava 100% claro, estou tendo dificuldade em descrever meu problema e sou um iniciante em rubi absoluto ...

Foi útil?

Solução

Pouco antes de criar seu novo usuário, você deve tentar verificar se existe um usuário com o mesmo login e e -mail (por exemplo):

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top