From 4827953bec250f630ca19ede3af37d1587ff1f62 Mon Sep 17 00:00:00 2001 From: danielvincent <danielgrippi@gmail.com> Date: Thu, 5 Aug 2010 10:29:30 -0700 Subject: [PATCH] DG MS; person specs are now passing. retraction on unfriend is now uncommented --- app/models/person.rb | 5 +---- app/models/user.rb | 33 ++++++++++----------------------- spec/models/person_spec.rb | 13 ++++++------- 3 files changed, 17 insertions(+), 34 deletions(-) diff --git a/app/models/person.rb b/app/models/person.rb index 9c148b50a1..b7bb371dd9 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -14,11 +14,11 @@ class Person key :key_fingerprint, String key :owner_id, ObjectId + key :user_refs, Integer, :default => 0 belongs_to :owner, :class_name => 'User' one :profile, :class_name => 'Profile' - many :users, :class_name => 'User' many :posts, :class_name => 'Post', :foreign_key => :person_id many :albums, :class_name => 'Album', :foreign_key => :person_id @@ -49,9 +49,6 @@ class Person end - - - ######## Posting ######## def post(class_name, options = {}) options[:person] = self diff --git a/app/models/user.rb b/app/models/user.rb index f022066f06..8b9995c464 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -4,15 +4,17 @@ class User devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable + key :friend_ids, Array + key :pending_friend_ids, Array + + one :person, :class_name => 'Person', :foreign_key => :owner_id + many :friends, :in => :friend_ids, :class_name => 'Person' + #before_validation_on_create :assign_key - before_validation :do_bad_things - one :person, :class_name => 'Person', :foreign_key => :owner_id - key :pending_friend_ids, Array - many :friends, :class_name => 'Person' def pending_friends @@ -24,8 +26,6 @@ class User "#{person.profile.first_name.to_s} #{person.profile.last_name.to_s}" end - - ######### Friend Requesting @@ -71,26 +71,13 @@ class User def unfriend(friend_id) bad_friend = Person.first(:_id => friend_id) - - puts bad_friend.users.count - puts self.friends.inspect - - self.friends.delete( friend_id ) + self.friend_ids.delete( friend_id ) self.save - bad_friend.users.delete( self.id ) - - - puts bad_friend.users.inspect - - - - puts bad_friend.users.count - if bad_friend - puts bad_friend.url - #Retraction.for(self).push_to_url(bad_friend.url) - bad_friend.destroy if bad_friend.users.count == 0 + Retraction.for(self).push_to_url(bad_friend.url) + bad_friend.update_attributes(:user_refs => bad_friend.user_refs - 1) + bad_friend.destroy if bad_friend.user_refs == 0 end end diff --git a/spec/models/person_spec.rb b/spec/models/person_spec.rb index 553b884897..ca3b9aeadd 100644 --- a/spec/models/person_spec.rb +++ b/spec/models/person_spec.rb @@ -49,8 +49,9 @@ describe Person do person = Factory.create(:person) - person.users << user user.friends << person + person.user_refs += 1 + person.save Person.all.count.should == 2 user.friends.count.should == 1 @@ -68,16 +69,14 @@ describe Person do person = Factory.create(:person) - - person.users << user_one - person.users << user_two - person.save - user_one.friends << person user_two.friends << person user_one.save user_two.save + person.user_refs += 2 + person.save + Person.all.count.should == 3 user_one.friends.count.should == 1 user_two.friends.count.should == 1 @@ -87,7 +86,7 @@ describe Person do user_one.friends.count.should == 0 user_two.friends.count.should == 1 - Person.all.count.should == 2 + Person.all.count.should == 3 end end -- GitLab