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 diff --git a/app/views/transfers/_account_links.html.erb b/app/views/transfers/_account_links.html.erb index 33390b31..738416c6 100644 --- a/app/views/transfers/_account_links.html.erb +++ b/app/views/transfers/_account_links.html.erb @@ -1,7 +1,25 @@ <%# locals: (transfer:, is_inflow: false) %>