module SelfRateable::Core::InstanceMethods::Likes

Public Instance Methods

like(rater) click to toggle source
# File lib/self_rateable/core/instance_methods.rb, line 12
def like(rater)
 rater.present? ? rate = ratings.where(rater_id: rater.id).first : raise('Rater object is incorrect.')
 if rate.present?
 # unlike if already rated
         liked_by_rater?(rater) ? ratings.where(rater_id: rater.id).delete_all : rate.rating += 1
         rate.save!
 else
 #create new record if not yet rated
         ratings << SelfRateable::Rating.new(rating: 1, rater_id: rater.try(:id))
 end
 self.save!
end
liked_by_rater?(rater) click to toggle source
# File lib/self_rateable/core/instance_methods.rb, line 8
def liked_by_rater?(rater)
  ratings.where(:rater_id => rater.id).count > 0
end
likes() click to toggle source
# File lib/self_rateable/core/instance_methods.rb, line 4
   def likes
  ratings.sum(:rating).to_f
end