skill-assessment-app/app/models/candidate.rb
2016-07-31 12:33:09 -05:00

44 lines
893 B
Ruby

class Candidate < ApplicationRecord
belongs_to :quiz
has_many :questions, -> { order("sort") }, through: :quiz
has_many :answers
belongs_to :recruiter, class_name: "User"
before_create :generate_test_hash
validates_presence_of :recruiter_id
validates_presence_of :test_hash
validates_uniqueness_of :test_hash
def submitted_answers
answers.where(submitted: true)
end
def answered_questions
answers.where.not(answer: nil)
end
def fetch_question qid
CandidateQuiz.new(id).fetch_question(qid).first
end
def my_quiz
CandidateQuiz.new(id).build_my_quiz
end
def status
# TODO: quiz status: not started, started, completed
"--"
end
private
def generate_test_hash
loop do
self[:test_hash] = SecureRandom.urlsafe_base64(8)
break unless Candidate.exists?(test_hash: self[:test_hash])
end
end
end