From aebbb9a3c1c5d26e04ad95e77202085e1d13abb3 Mon Sep 17 00:00:00 2001 From: Josh Pigford Date: Thu, 1 May 2025 18:52:09 -0500 Subject: [PATCH] Enhance institution_domain method in Account model - Improved error handling for invalid institution URLs by rescuing URI::InvalidURIError and logging a warning. - Refactored the method to use safe navigation and streamline the URL parsing process. --- app/models/account.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/models/account.rb b/app/models/account.rb index f07b442f..85167e22 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -62,8 +62,18 @@ class Account < ApplicationRecord end def institution_domain - return nil unless plaid_account&.plaid_item&.institution_url.present? - URI.parse(plaid_account.plaid_item.institution_url).host.gsub(/^www\./, "") + url_string = plaid_account&.plaid_item&.institution_url + return nil unless url_string.present? + + begin + uri = URI.parse(url_string) + # Use safe navigation on .host before calling gsub + uri.host&.gsub(/^www\./, "") + rescue URI::InvalidURIError + # Log a warning if the URL is invalid and return nil + Rails.logger.warn("Invalid institution URL encountered for account #{id}: #{url_string}") + nil + end end def destroy_later