diff --git a/app/components/goals/card_component.html.erb b/app/components/goals/card_component.html.erb index b3a521654..5eb6416a3 100644 --- a/app/components/goals/card_component.html.erb +++ b/app/components/goals/card_component.html.erb @@ -1,9 +1,16 @@
diff --git a/app/components/goals/card_component.rb b/app/components/goals/card_component.rb index 6ca6a32a5..ac49079a0 100644 --- a/app/components/goals/card_component.rb +++ b/app/components/goals/card_component.rb @@ -26,6 +26,13 @@ class Goals::CardComponent < ApplicationComponent @linked_accounts ||= goal.linked_accounts.to_a end + # Open + unexpired pledges are preloaded on the index via the + # `.includes(:open_pledges, ...)` chain in GoalsController#index, so + # this is a hit on the in-memory association — no N+1. + def has_pending_pledge? + goal.open_pledges.any? + end + def linked_accounts_count_label I18n.t("goals.goal_card.accounts", count: linked_accounts.size) end diff --git a/config/locales/views/goals/en.yml b/config/locales/views/goals/en.yml index 4ec1382e2..fa6e9698f 100644 --- a/config/locales/views/goals/en.yml +++ b/config/locales/views/goals/en.yml @@ -233,6 +233,7 @@ en: footer_reached: Goal reached footer_catch_up: "Save %{amount}/mo to catch up" footer_no_deadline: Open + pending_pledge: Pending pledge footer_no_pledges: No matched pledges yet footer_last_today: Last pledge matched today footer_last_days: