mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-09 06:35:37 +08:00
47 lines
874 B
Ruby
47 lines
874 B
Ruby
# frozen_string_literal: true
|
|
|
|
class FormFieldValue < ApplicationRecord
|
|
belongs_to :form_response
|
|
belongs_to :form_field
|
|
belongs_to :created_by, class_name: 'User'
|
|
belongs_to :submitted_by, class_name: 'User'
|
|
|
|
validate :not_applicable_values
|
|
validate :uniqueness_latest, if: :latest?
|
|
|
|
scope :latest, -> { where(latest: true) }
|
|
|
|
def value=(_)
|
|
raise NotImplementedError
|
|
end
|
|
|
|
def value
|
|
raise NotImplementedError
|
|
end
|
|
|
|
def formatted
|
|
value
|
|
end
|
|
|
|
def value_in_range?
|
|
true
|
|
end
|
|
|
|
def name
|
|
form_field&.name
|
|
end
|
|
|
|
private
|
|
|
|
def not_applicable_values
|
|
return unless not_applicable
|
|
|
|
errors.add(:value, :not_applicable) if value.present?
|
|
end
|
|
|
|
def uniqueness_latest
|
|
return unless form_response&.form_field_values&.exists?(form_field_id: form_field_id, latest: true)
|
|
|
|
errors.add(:value, :not_unique_latest)
|
|
end
|
|
end
|