Ruby on rails 4 一个用户有多个使用omniauth facebook登录的UID

Ruby on rails 4 一个用户有多个使用omniauth facebook登录的UID,ruby-on-rails-4,omniauth,omniauth-facebook,Ruby On Rails 4,Omniauth,Omniauth Facebook,我用Desive为登录系统实现了omniauth和facebook插件 但是,同一个facebook帐户似乎会返回不同的令牌uid 我如何处理Rails中的这种情况 我新设计的方法有不良副作用吗 我计划只使用facebook omniauth作为登录系统的唯一方式 原始创建用户方法 新的设计方法 样本文件 def self.from_omniauth(auth) where(provider: auth.provider, uid: auth.uid).first_or_create do

我用Desive为登录系统实现了omniauth和facebook插件

但是,同一个facebook帐户似乎会返回不同的令牌
uid

我如何处理Rails中的这种情况

我新设计的方法有不良副作用吗

我计划只使用facebook omniauth作为登录系统的唯一方式

原始创建用户方法 新的设计方法 样本文件
def self.from_omniauth(auth)
  where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
    user.provider = auth.provider
    user.uid = auth.uid
    user.email = auth.info.email
    user.password = Devise.friendly_token[0,20]
  end
end
def self.from_omniauth(auth)
  where(email: auth.email).first_or_create do |user|
    user.provider = auth.provider
    user.uid = auth.uid
    user.email = auth.info.email
    user.password = Devise.friendly_token[0,20]
  end
end
{
  "_id": ObjectId("55bf803b69702d0603000000"),
  "email": "sample@gmail.com",
  "encrypted_password": "5a2U.62pm6.fsdfdsfdsvNrf.akZ4la45ixpgqB20n6uu",
  "sign_in_count": 4,
  "provider": "facebook",
  "uid": "113569521332134112514",
  "reset_password_token": null,
  "reset_password_sent_at": null,
}

{
  "_id": ObjectId("55c157a5506f638652000000"),
  "email": "sample@gmail.com",
  "encrypted_password": "$sdfgg,so51lkpe7P5DDKwz3hTrqFE7MsfRw0lEa",
  "sign_in_count": 1,
  "provider": "facebook",
  "uid": "10000014141261376741",
}