aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/concerns/min_max_values_validation.rb
blob: a79f5ec8578ecb907e5ced9340b4f7de09fbd22c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
module MinMaxValuesValidation
  extend ActiveSupport::Concern

  included do
    validates_presence_of :minimum, :maximum
    validates_numericality_of :minimum, :maximum, allow_nil: true, greater_than_or_equal_to: 0
    validates_format_of :minimum, :maximum, with: %r{\A\d+(\.\d+)?\Z}
    validate :min_max_values_validation
  end

  def min_max_values_validation
    return true if (minimum && maximum) && (minimum.to_f < maximum.to_f)
    errors.add(:minimum, I18n.t('compliance_controls.min_max_values', min: minimum, max: maximum))
  end
end