From 264c4e747b92c0b5869e883ad044793866930bf5 Mon Sep 17 00:00:00 2001 From: Marko Lovic Date: Tue, 10 Jul 2018 09:36:27 +0200 Subject: [PATCH] Improve User#headings_supported_within_group performance Performs a single DB call instead of 3 --- app/models/user.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 6aaf634ef..37ddebbd0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -128,8 +128,13 @@ class User < ActiveRecord::Base end def headings_voted_within_group(group) - voted_investments = votes.for_budget_investments(Budget::Investment.by_group(group.id)).votables - Budget::Heading.where(id: voted_investments.map(&:heading_id).uniq) + Budget::Heading.where(id: + votes.where(votable_type: Budget::Investment) + .joins(:budget_investment) + .where(budget_investments: {group_id: group.id}) + .distinct + .select('budget_investments.heading_id') + ) end def administrator?