Module: SelfRateable::Core::InstanceMethods::Likes

Defined in:
lib/self_rateable/core/instance_methods.rb

Instance Method Summary collapse

Instance Method Details

#like(rater) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# 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) ⇒ Boolean

Returns:

  • (Boolean)


8
9
10
# File 'lib/self_rateable/core/instance_methods.rb', line 8

def liked_by_rater?(rater)
  ratings.where(:rater_id => rater.id).count > 0
end

#likesObject



4
5
6
# File 'lib/self_rateable/core/instance_methods.rb', line 4

def likes
  ratings.sum(:rating).to_f
end