# frozen_string_literal: true class StripeAccount < ApplicationRecord self.belongs_to_required_by_default = false belongs_to :enterprise validates :stripe_user_id, :stripe_publishable_key, presence: true validates :enterprise_id, uniqueness: true def deauthorize_and_destroy accounts = StripeAccount.where(stripe_user_id:) # Only deauthorize the user if it is not linked to multiple accounts return destroy if accounts.count > 1 destroy && Stripe::OAuth.deauthorize(stripe_user_id:) rescue Stripe::OAuth::OAuthError => e Alert.raise( e, stripe_account: stripe_user_id, enterprise_id: ) true end end