stevenbeales/mental-test

View on GitHub
app/models/visit.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

# == Schema Information
#
# Table name: visits
#
#  id         :integer          not null, primary key
#  survey_id  :integer          not null
#  user_id    :integer          not null
#  name       :string
#  number     :integer          default(1), not null
#  visit_date :datetime         not null
#  created_at :datetime         not null
#  updated_at :datetime         not null
#
# Indexes
#
#  index_by_survey_user_number  (survey_id,user_id,number) UNIQUE
#  index_visits_on_survey_id    (survey_id)
#  index_visits_on_user_id      (user_id)
#

# Model to represent a user visit or an attempt in a self assessment
class Visit < ApplicationRecord
  audited
  belongs_to :user, inverse_of: :visits
  belongs_to :survey, inverse_of: :visits
  has_many :assessments, dependent: :destroy

  default_value_for :visit_date, Date.today

  validates :user, presence: true
  validates :survey, presence: true
  validates :visit_date, presence: true
  validates_uniqueness_of :number, scope: %i[survey user]
  validates :number, presence: true, allow_blank: false
  validates :number, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 10_000 }
  validates_datetime :visit_date

  def to_s
    %(#{user} #{survey} #{number})
  end
end