class User < ApplicationRecord has_many :authentications, dependent: :destroy has_many :forms, dependent: :destroy def self.find_by_oauth_info(auth_client) oauth = Google::Apis::Oauth2V2::Oauth2Service.new oauth.authorization = auth_client user_info = oauth.get_userinfo if user = User.find_by(google_id: user_info.id) return user, user.authentications.last else user = User.create(name: user_info.name, email: user_info.email, google_id: user_info.id) authentication = user.authentications.create( access_token: auth_client.access_token, refresh_token: auth_client.refresh_token, expires_at: Time.at(auth_client.expires_at) ) return user, authentication end end def google_authorization authentications.last.google_authorization end end