Visit   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 20
Duplicated Lines 0 %

Importance

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

1 Method

Rating   Name   Duplication   Size   Complexity  
A to_s() 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
  audited
26
  belongs_to :user, inverse_of: :visits 
27
  belongs_to :survey, inverse_of: :visits 
28
  has_many :assessments, dependent: :destroy
29
30
  default_value_for :visit_date, Date.today
31
  
32
  validates :user, presence: true
33
  validates :survey, presence: true
34
  validates :visit_date, presence: true
35
  validates_uniqueness_of :number, scope: %i[survey user] 
36
  validates :number, presence: true, allow_blank: false
37
  validates :number, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 10_000 }
38
  validates_datetime :visit_date 
39
40
  def to_s
41
    "#{user} #{survey} #{number}"
42
  end
43
end
44