Commit cf523ca39dc2940e6460083107c941c57e460f49

Authored by Jörg Battermann
Committed by Tom Cocca
1 parent f53b8ae0

acts_as_followable.rb's followed_by? method is working (again?)... and simplifie…

…d lookup there a lil bit.. no foreach iteration anymore

Signed-off-by: Tom Cocca <tom.cocca@gmail.com>
Showing 1 changed file with 10 additions and 6 deletions   Show diff stats
lib/acts_as_followable.rb
@@ -29,14 +29,18 @@ module ActiveRecord #:nodoc: @@ -29,14 +29,18 @@ module ActiveRecord #:nodoc:
29 end 29 end
30 30
31 # Returns true if the current instance is followed by the passed record. 31 # Returns true if the current instance is followed by the passed record.
32 - def followed_by?(follwer)  
33 - rtn = false  
34 - self.follows.each do |f|  
35 - rtn = true if follwer.id == f.follower_id && parent_class_name(follwer) == f.follower_type  
36 - end  
37 - rtn 32 + def followed_by?(follower)
  33 + self.follows.find(:first, :conditions => ["follower_id = ? AND follower_type = ?", follower.id, parent_class_name(follower)]) ? true : false
38 end 34 end
39 35
  36 + # Retrieves the parent class name if using STI.
  37 + def parent_class_name(obj)
  38 + if obj.class.superclass != ActiveRecord::Base
  39 + return obj.class.superclass.name
  40 + end
  41 +
  42 + return obj.class.name
  43 + end
40 end 44 end
41 45
42 end 46 end