diff --git a/app/models/service_user.rb b/app/models/service_user.rb index 88408b9dc..122a98ce2 100644 --- a/app/models/service_user.rb +++ b/app/models/service_user.rb @@ -7,11 +7,10 @@ class ServiceUser < ActiveRecord::Base before_save :attach_local_models - private def attach_local_models service_for_uid = Services::Facebook.where(:type => service.type.to_s, :uid => self.uid).first if !service_for_uid.blank? && (service_for_uid.user.person.profile.searchable) - self.person = service_for_uid.user.person + self.person = service_for_uid.user.person else self.person = nil end diff --git a/app/models/services/facebook.rb b/app/models/services/facebook.rb index 121bb73c6..fbef23e8a 100644 --- a/app/models/services/facebook.rb +++ b/app/models/services/facebook.rb @@ -42,9 +42,11 @@ class Services::Facebook < Service url = "https://graph.facebook.com/me/friends?fields[]=name&fields[]=picture&access_token=#{URI.escape(self.access_token)}" response = Faraday.get(url) data = JSON.parse(response.body)['data'] - s_users = data.map{ |p| - ServiceUser.new(:service_id => self.id, :uid => p["id"], :photo_url => p["picture"], :name => p["name"]) + data.map!{ |p| + su = ServiceUser.new(:service_id => self.id, :uid => p["id"], :photo_url => p["picture"], :name => p["name"]) + su.attach_local_models + su } - ServiceUser.import(s_users) + ServiceUser.import(data) end end diff --git a/spec/models/services/facebook_spec.rb b/spec/models/services/facebook_spec.rb index a2dff3e29..86e246e59 100644 --- a/spec/models/services/facebook_spec.rb +++ b/spec/models/services/facebook_spec.rb @@ -66,6 +66,11 @@ JSON @service.save_friends }.should change(ServiceUser, :count).by(2) end + + it 'attaches local models' do + @service.save_friends + @service.service_users.first.person.should == @user2.person + end end describe '#finder' do