Commit 7d1581b1

mo khan <mo@mokhan.ca>
2013-05-11 14:26:04
refactor add favorite
1 parent 457f9a5
Changed files (3)
app/models/creation.rb
@@ -47,4 +47,12 @@ class Creation < ActiveRecord::Base
   def is_liked_by(user)
     favorites.any? { |favorite| favorite.user == user }
   end
+
+  def liked_by(user)
+    if is_liked_by(user)
+      favorites.find { |favorite| favorite.user == user }
+    else
+      favorites.create({:user_id => user.id})
+    end
+  end
 end
app/models/user.rb
@@ -11,12 +11,8 @@ class User < ActiveRecord::Base
   acts_as_tagger
   default_scope order("created_at DESC")
 
-  def add_favorite( creation )
-    if self.already_likes(creation)
-      favorites.find { |favorite| favorite.user == self }
-    else
-      creation.favorites.create({:user_id => self.id})
-    end
+  def add_favorite(creation)
+    creation.liked_by(self)
   end
 
   def already_likes(creation)
spec/models/user_spec.rb
@@ -96,6 +96,7 @@ describe User do
         result.should == favorite
       end
     end
+
     context "when they have not liked it before" do
       let(:result) { sut.add_favorite(cake) }