From 0dbecce65dcc3d0b5f32953dd2cb935cb242bf07 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Tue, 16 Jun 2015 17:43:13 +1000 Subject: [PATCH] Optimise relatives including self - minor improvement --- app/models/enterprise_relationship.rb | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/models/enterprise_relationship.rb b/app/models/enterprise_relationship.rb index e6acc13332..8d279b2a20 100644 --- a/app/models/enterprise_relationship.rb +++ b/app/models/enterprise_relationship.rb @@ -32,10 +32,13 @@ class EnterpriseRelationship < ActiveRecord::Base relationships = EnterpriseRelationship.includes(:child, :parent) relatives = {} - Enterprise.all.each do |e| - relatives[e.id] ||= { distributors: Set.new, producers: Set.new } - relatives[e.id][:producers] << e.id if e.is_primary_producer - relatives[e.id][:distributors] << e.id if e.is_distributor + Enterprise.is_primary_producer.pluck(:id).each do |enterprise_id| + relatives[enterprise_id] ||= { distributors: Set.new, producers: Set.new } + relatives[enterprise_id][:producers] << enterprise_id + end + Enterprise.is_distributor.pluck(:id).each do |enterprise_id| + relatives[enterprise_id] ||= { distributors: Set.new, producers: Set.new } + relatives[enterprise_id][:distributors] << enterprise_id end relationships.each do |r|