class CandidateController < ApplicationController def welcome end def question @status = QuizStatus.new(current_candidate) qid = @status.current_question_id redirect_to :summary and return if qid.nil? @question = current_candidate.fetch_question(qid) end def update_question redirect_to :summary and return if params.key?(:update) redirect_to :saved and return if params.key?(:save) redirect_to :question end def summary @quiz = current_candidate.my_quiz @status = QuizStatus.new(current_candidate) redirect_to :question and return unless @status.current_question_id.nil? end def update_summary redirect_to :summary end def thankyou redirect_to root_path if session[:test_id].nil? reset_session end def saved end def validate candidate = Candidate.find_by(test_hash: params['test_id']) if candidate.nil? reset_session redirect_to root_path, alert: "Sorry, incorrect test id" else session[:test_id] = candidate.test_hash redirect_to :question end end def live_coder @question = Question.find(params[:question_id]) @answer = @question.answers.order("RAND()").first.answer render layout: false end private def question_params params.permit(:save) end end