Module: ActiveRecord::Blakstar::Like::InstanceMethods
- Defined in:
- lib/blakstar_like.rb
Instance Method Summary collapse
-
#average_like ⇒ Object
Calculates the average rating.
- #count_dislikes! ⇒ Object
- #count_likes! ⇒ Object
- #dislike!(user) ⇒ Object
-
#like!(user) ⇒ Object
Likes the object by a given value.
-
#liked_by?(user) ⇒ Boolean
Checks wheter a user liked or disliked the object or not.
Instance Method Details
#average_like ⇒ Object
Calculates the average rating. Calculation based on the already given values.
37 38 39 40 |
# File 'lib/blakstar_like.rb', line 37 def average_like return 0 if likes.empty? count_likes! + count_dislikes! end |
#count_dislikes! ⇒ Object
46 47 48 |
# File 'lib/blakstar_like.rb', line 46 def count_dislikes! self.respond_to?( :dislikes_count) ? self.dislikes_count : likes.where('value = -1').count end |
#count_likes! ⇒ Object
42 43 44 |
# File 'lib/blakstar_like.rb', line 42 def count_likes! self.respond_to?( :likes_count) ? self.likes_count : likes.where('value = 1').count end |
#dislike!(user) ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/blakstar_like.rb', line 27 def dislike!( user ) return unless user.class.to_s == 'User' ActiveRecord::Base.transaction do like = likes.create( :value => -1, :user_id => user.id ) self.increment!( :dislikes_count ) if !like.changed? && self.respond_to?( :dislikes_count ) like end end |
#like!(user) ⇒ Object
Likes the object by a given value. A user object can be passed to the method.
18 19 20 21 22 23 24 25 |
# File 'lib/blakstar_like.rb', line 18 def like!( user ) return unless user.class.to_s == 'User' ActiveRecord::Base.transaction do like = likes.create( :value => 1, :user_id => user.id ) self.increment!( :likes_count ) if !like.changed? && self.respond_to?( :likes_count ) like end end |
#liked_by?(user) ⇒ Boolean
Checks wheter a user liked or disliked the object or not.
51 52 53 54 |
# File 'lib/blakstar_like.rb', line 51 def liked_by?( user ) return false if user.nil? || user.class.to_s != 'User' likes.detect {|l| l.user_id == user.id } end |