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