0
我有一个应用程序,它目前使用devise和omniauth使用gmail openID进行身份验证。现在我想为每个用户分配一个唯一的用户ID。所以他们仍然会使用他们的gmail凭证登录,但现在他们将拥有一个用户ID,他们将被引用。在rails 3中使用userid字段使用devise和omniauth
我该如何去添加到我的模式?
我有一个应用程序,它目前使用devise和omniauth使用gmail openID进行身份验证。现在我想为每个用户分配一个唯一的用户ID。所以他们仍然会使用他们的gmail凭证登录,但现在他们将拥有一个用户ID,他们将被引用。在rails 3中使用userid字段使用devise和omniauth
我该如何去添加到我的模式?
当您创建用户表时,您的迁移脚本应该默认创建了一个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