2011-02-06 77 views
0

我有一个应用程序,它目前使用devise和omniauth使用gmail openID进行身份验证。现在我想为每个用户分配一个唯一的用户ID。所以他们仍然会使用他们的gmail凭证登录,但现在他们将拥有一个用户ID,他们将被引用。在rails 3中使用userid字段使用devise和omniauth

我该如何去添加到我的模式?

回答

0

当您创建用户表时,您的迁移脚本应该默认创建了一个id列。此列中的值应该是唯一的,以便您可以将其用作所有用户的唯一ID。如果这不符合您的需求,您可以在数据库中添加另一列,然后在创建数据库中不存在的用户时,将该字段设置为OmniauthCallbacksController中的唯一标识符。

例如,在devise page的Facebook示例中,您可以修改从OmniauthCallbacksController调用的find_for_facebook_oauth方法,以便在创建用户时创建新字段。

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 
相关问题