Test Setup Failed
Push — master ( e84484...e96fa0 )
by Steven
01:49
created

Visit   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 26
rs 10
c 1
b 0
f 0
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A to_s() 0 3 1
A set_visit_date() 0 3 1
1
# frozen_string_literal: true
2
3
# == Schema Information
4
#
5
# Table name: visits
6
#
7
#  id         :integer          not null, primary key
8
#  survey_id  :integer          not null
9
#  user_id    :integer          not null
10
#  name       :string
11
#  number     :integer          default(1), not null
12
#  visit_date :datetime         not null
13
#  created_at :datetime         not null
14
#  updated_at :datetime         not null
15
#
16
# Indexes
17
#
18
#  index_by_survey_user_number  (survey_id,user_id,number) UNIQUE
19
#  index_visits_on_survey_id    (survey_id)
20
#  index_visits_on_user_id      (user_id)
21
#
22
23
# Model to represent a user visit or an attempt in a self assessment
24
class Visit < ApplicationRecord
25
  
26
  belongs_to :user, inverse_of: :visits 
27
  belongs_to :survey, inverse_of: :visits 
28
  has_many :assessments, dependent: :destroy
29
  
30
  validates :user, presence: true
31
  validates :survey, presence: true
32
  validates :visit_date, presence: true
33
  validates_uniqueness_of :number, scope: %i[survey user] 
34
  validates :number, presence: true, allow_blank: false
35
  validates :number, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 10_000 }
36
  validates_datetime :visit_date 
37
38
  after_initialize :set_visit_date
39
40
  def to_s
41
    "#{user} #{survey} #{number}"
42
  end
43
44
  private
45
46
  def set_visit_date
47
    self.visit_date ||= Date.today
48
  end
49
end
50