module Mongoid::Utils::Votable
Public Instance Methods
vote!(value, voter)
click to toggle source
# File lib/mongoid/utils/votable.rb, line 32 def vote!(value, voter) vote = self.votes.find_or_create_by(user: voter) if vote.value == value vote.destroy value = 0 end update_values(value, vote) vote.update_attribute(:value, value) if value != 0 vote end
vote_down(voter)
click to toggle source
# File lib/mongoid/utils/votable.rb, line 28 def vote_down(voter) vote!(-1, voter) end
vote_up(voter)
click to toggle source
# File lib/mongoid/utils/votable.rb, line 24 def vote_up(voter) vote!(1, voter) end
voted?(voter)
click to toggle source
# File lib/mongoid/utils/votable.rb, line 20 def voted?(voter) votes.where(voter: voter).first != nil end
votes_count()
click to toggle source
# File lib/mongoid/utils/votable.rb, line 46 def votes_count self.votes.count end
Private Instance Methods
update_values(value, vote)
click to toggle source
# File lib/mongoid/utils/votable.rb, line 58 def update_values(value, vote) votes_up_change = (vote.value > 0 ? -vote.value : 0) + (value > 0 ? value : 0) votes_down_change = (vote.value < 0 ? vote.value : 0) + (value < 0 ? value.abs : 0) self.timeless.inc(votes_up: votes_up_change) self.timeless.inc(votes_down: votes_down_change) self.timeless.inc(votes_value: votes_up_change - votes_down_change) end