raen79/tutor_chatbot

View on GitHub
app/models/student_question.rb

Summary

Maintainability
A
0 mins
Test Coverage
class StudentQuestion < ApplicationRecord
  before_validation :upcase_id
  after_create :contact_lecturer

  validates :text, :question => true
  validates :lecturer_id, :presence => true
  validates :student_id, :presence => true
  validates :module_id, :presence => true
  validates :coursework_id, :presence => true

  def answer(answer)
    raise ArgumentError, 'answer should be >= 3' if answer.length < 3

    ActiveRecord::Base.transaction do
      @faq = Faq.create!(
        :question => self.text,
        :answer => answer,
        :module_id => self.module_id,
        :lecturer_id => self.lecturer_id,
        :coursework_id => self.coursework_id
      )
      self.destroy!
    end

    @faq
  end

  private
    def upcase_id
      [:lecturer_id, :module_id, :coursework_id, :student_id].each do |attribute|
        if !self[attribute].blank? && self[attribute].kind_of?(String)
          self[attribute].upcase!
        end
      end
    end

    def contact_lecturer
      QuestionMailer.ask_lecturer(self).deliver_later
    end
end