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