app/models/openid.rb
# frozen_string_literal: true
class Openid < ApplicationRecord
belongs_to :user
validates :provider, :uid, :email, presence: true
# Searches for openid based on provider and uid.
# Returns found openid or a new openid.
# ====Returns
# * Openid::ActiveRecord_Relation -> openid
def self.find_for_oauth(auth)
openid = Openid.where(provider: auth.provider, uid: auth.uid).first_or_initialize
if openid.new_record?
openid.email = auth.info.email
if (existing_openid = Openid.where(email: openid.email).first)
openid.user_id = existing_openid.user_id
end
end
openid
end
end