demarches-normaliennes/app/models/concerns/champs_validate_concern.rb

35 lines
855 B
Ruby

# frozen_string_literal: true
module ChampsValidateConcern
extend ActiveSupport::Concern
included do
protected
# Champs public/private must be validated depending on the context
def valid_champ_value?
valid?(public? ? :champs_public_value : :champs_private_value)
end
private
def validate_champ_value?
case validation_context
when :champs_public_value
public? && in_dossier_revision? && visible?
when :champs_private_value
private? && in_dossier_revision? && visible?
else
false
end
end
def validate_champ_value_or_prefill?
validate_champ_value? || validation_context == :prefill
end
def in_dossier_revision?
dossier.revision.types_de_champ.any? { _1.stable_id == stable_id } && is_type?(type_de_champ.type_champ)
end
end
end