Sha256: f6722a841b251654117b69dee1cea1adbc1168e05d2c8d093b098edcadb05a04

Contents?: true

Size: 966 Bytes

Versions: 13

Compression:

Stored size: 966 Bytes

Contents

# frozen_string_literal: true
# Collected responses from one Participant WAI assessment session.
class WaiAssessment < ActiveRecord::Base
  MIN_QUESTION_SCORE = 1
  MAX_QUESTION_SCORE = 5
  QUESTION_COUNT = 12
  # rubocop:disable Style/MutableConstant
  QUESTION_ATTRIBUTES = :q1, :q2, :q3, :q4, :q5, :q6, :q7, :q8, :q9, :q10, :q11,
                        :q12
  # rubocop:enable Style/MutableConstant

  belongs_to :participant

  validates :participant, :release_date, presence: true
  validates :release_date, uniqueness: { scope: :participant_id }
  validate :scores_valid

  private

  def scores_valid
    return if remove_nils.empty?

    if remove_nils.min < MIN_QUESTION_SCORE ||
       remove_nils.max > MAX_QUESTION_SCORE
      errors.add(:base, "scores must be between #{MIN_QUESTION_SCORE} " \
                        "and #{MAX_QUESTION_SCORE} inclusive")
    end
  end

  def remove_nils
    QUESTION_ATTRIBUTES.map { |a| self[a] }.compact
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
think_feel_do_engine-3.22.9 app/models/wai_assessment.rb
think_feel_do_engine-3.22.8 app/models/wai_assessment.rb
think_feel_do_engine-3.22.7 app/models/wai_assessment.rb
think_feel_do_engine-3.22.6 app/models/wai_assessment.rb
think_feel_do_engine-3.22.5 app/models/wai_assessment.rb
think_feel_do_engine-3.22.4 app/models/wai_assessment.rb
think_feel_do_engine-3.22.2 app/models/wai_assessment.rb
think_feel_do_engine-3.22.1 app/models/wai_assessment.rb
think_feel_do_engine-3.22.0 app/models/wai_assessment.rb
think_feel_do_engine-3.21.2 app/models/wai_assessment.rb
think_feel_do_engine-3.21.1 app/models/wai_assessment.rb
think_feel_do_engine-3.21.0 app/models/wai_assessment.rb
think_feel_do_engine-3.20.1 app/models/wai_assessment.rb