module ActiveRecord::Blakstar::Like::InstanceMethods
Public Instance Methods
average_like()
click to toggle source
Calculates the average rating. Calculation based on the already given values.
# File lib/blakstar_like.rb, line 37 def average_like return 0 if likes.empty? count_likes! + count_dislikes! end
count_dislikes!()
click to toggle source
# 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!()
click to toggle source
# 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 )
click to toggle source
# 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 )
click to toggle source
Likes the object by a given value. A user object can be passed to the method.
# 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 )
click to toggle source
Checks wheter a user liked or disliked the object or not.
# 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