diff --git a/app/controllers/votes_controller.rb b/app/controllers/votes_controller.rb new file mode 100644 index 000000000..d3c35a220 --- /dev/null +++ b/app/controllers/votes_controller.rb @@ -0,0 +1,20 @@ +class VotesController < ApplicationController + before_action :set_debate + before_action :authenticate_user! + + def create + register_vote + notice = @debate.vote_registered? ? "Gracias por votar." : "Tu voto ya ha sido registrado." + redirect_to @debate, notice: notice + end + + private + + def set_debate + @debate = Debate.find(params[:debate_id]) + end + + def register_vote + @debate.vote_by voter: current_user, vote: params[:value] + end +end diff --git a/app/models/debate.rb b/app/models/debate.rb index c66913c59..5e810d061 100644 --- a/app/models/debate.rb +++ b/app/models/debate.rb @@ -1,6 +1,27 @@ +require 'numeric' class Debate < ActiveRecord::Base + acts_as_votable + validates :title, presence: true validates :description, presence: true validates :terms_of_service, acceptance: { allow_nil: false }, on: :create -end + + #vote can be 'likes' or 'dislikes' + def percentage(vote) + return if total_votes == 0 + send(vote).percent_of(total_votes) + end + + def likes + get_likes.size + end + + def dislikes + get_dislikes.size + end + + def total_votes + votes_for.size + end +end \ No newline at end of file diff --git a/app/views/debates/show.html.erb b/app/views/debates/show.html.erb index 777b22d1b..132152b3b 100644 --- a/app/views/debates/show.html.erb +++ b/app/views/debates/show.html.erb @@ -4,5 +4,22 @@
Creado el: <%= l @debate.created_at.to_date %>
-<%= link_to 'Edit', edit_debate_path(@debate) %> | -<%= link_to 'Back', debates_path %> \ No newline at end of file +