Test Setup Failed
Push — master ( 4ddacd...420772 )
by Steven
01:59
created

Assessment.set_order_number()   A

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
# frozen_string_literal: true
2
3
# Model to represent the user taking an instrument/questionnaire within a survey/campaign
4
class Assessment < ApplicationRecord
5
  belongs_to :visit, inverse_of: :assessments
6
  has_one :survey, through: :visit
7
  has_one :user, through: :visit
8
  has_many :assessment_instruments, inverse_of: :assessment, dependent: :destroy 
9
  has_many :instruments, through: :assessment_instruments
10
  has_many :responses, inverse_of: :assessment, dependent: :destroy
11
  has_many :scores, inverse_of: :assessment, dependent: :destroy
12
  
13
  validates :visit, presence: true
14
  validates :order_number, presence: true, allow_blank: false
15
  validates :order_number, numericality: { only_integer: true, 
16
                                           greater_than_or_equal_to: 1, 
17
                                           less_than_or_equal_to: 10_000 }
18
  validates_uniqueness_of :order_number, on: :create, message: 'must be unique', scope: :visit
19
 
20
  before_destroy :destroy_scores
21
  after_initialize :set_order_number
22
23
  def to_s
24
    visit.to_s
25
  end
26
27
  private
28
29
  def destroy_scores
30
    scores.destroy_all
31
  end
32
33
  def set_order_number
34
    self.order_number ||= 1
35
  end
36
end
37
38
# == Schema Information
39
#
40
# Table name: assessments
41
#
42
#  id           :integer          not null, primary key
43
#  visit_id     :integer          not null
44
#  order_number :integer          default(1), not null
45
#  content      :jsonb            not null
46
#  created_at   :datetime         not null
47
#  updated_at   :datetime         not null
48
#
49
# Indexes
50
#
51
#  assessment_content             (content)
52
#  index_assessments_on_visit_id  (visit_id)
53
#  index_by_visit_order_number    (visit_id,order_number) UNIQUE
54
#
55