From 605e70f0955fc87446fc5a5a00f32e8acafb73ac Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 28 Jan 2011 16:26:34 -0800 Subject: [PATCH] Do application side join to retrieve contacts for fb finder, rather than n query --- app/models/services/facebook.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/models/services/facebook.rb b/app/models/services/facebook.rb index c7c0aafba..f0987a16f 100644 --- a/app/models/services/facebook.rb +++ b/app/models/services/facebook.rb @@ -38,11 +38,16 @@ class Services::Facebook < Service end service_objects = Services::Facebook.where(:uid => data_h.keys).includes(:user => {:person => :profile}) + person_ids_and_uids = {} + service_objects.each do |s| data_h[s.uid][:person] = s.user.person if s.user.person.profile.searchable - data_h[s.uid][:contact] = self.user.contacts.where(:person_id => s.user.person.id).first + person_ids_and_uids[s.user.person.id] = s.uid end + contact_objects = self.user.contacts.where(:person_id => person_ids_and_uids.keys) + contact_objects.each{|c| data_h[person_ids_and_uids[c.person_id]][:contact] = c} + data_h end end