def unvote(voteable)
      check_voteable(voteable)

      voting = fetch_voting(voteable)

      raise Exceptions::NotVotedError unless voting

      if voting.up_vote
        voteable.up_votes -= 1
        self.up_votes -= 1 if has_attribute?(:up_votes)
      else
        voteable.down_votes -= 1
        self.down_votes -= 1 if has_attribute?(:down_votes)
      end

      Voting.transaction do
        save
        voteable.save
        voting.destroy
      end

      true
    end
def unvote(voteable)
      check_voteable(voteable)

      voting = fetch_voting(voteable)

      raise Exceptions::NotVotedError unless voting

      if voting.up_vote
        voteable.up_votes -= 1
        self.up_votes -= 1 if has_attribute?(:up_votes)
      else
        voteable.down_votes -= 1
        self.down_votes -= 1 if has_attribute?(:down_votes)
      end

      Voting.transaction do
        save
        voteable.save
        voting.destroy
      end

      true
    end
Clears an already done vote on a +voteable+.
 Raises a NotVotedError if the voter didn't voted for the voteable.