2011-02-06 1 views
0

J'ai une application qui utilise actuellement le legs et l'omniauth pour s'authentifier en utilisant gmail openID. Maintenant, je voudrais attribuer à chaque utilisateur un identifiant unique. Donc, ils se connecteraient encore en utilisant leurs informations d'identification Gmail mais maintenant ils auraient un identifiant d'utilisateur auquel ils seront référencés.avoir un champ userid dans les rails 3 en utilisant un appareil et un omniauth

Comment puis-je ajouter cela à mon schéma?

Répondre

0

Votre script de migration doit avoir créé une colonne d'ID par défaut lorsque vous avez créé votre table utilisateur. Les valeurs de cette colonne doivent être uniques afin que vous puissiez l'utiliser comme identifiant unique pour tous les utilisateurs. Si cela ne répond pas à vos besoins, vous pouvez simplement ajouter une autre colonne à votre base de données et définir ce champ sur un identifiant unique dans votre OmniauthCallbacksController lorsque vous créez des utilisateurs qui n'existent pas déjà dans la base de données. Par exemple, dans l'exemple facebook du devise page, vous pouvez modifier la méthode find_for_facebook_oauth appelée à partir de OmniauthCallbacksController afin qu'elle crée votre nouveau champ lorsqu'un utilisateur est créé.

def self.find_for_facebook_oauth(access_token, signed_in_resource=nil) 
    data = access_token['extra']['user_hash'] 
    if user = User.find_by_email(data["email"]) 
    user 
    else # Create an user with a stub password. 
    # Add code here to create unique identifier for the user 
    # and make sure your field is passed to the create! method 
    User.create!(:email => data["email"], :password => Devise.friendly_token[0,20]) 
    end 
end 
Questions connexes