Sha256: 985c63c4f8611594527d9e8b6f0ca238898212123f76aeb5f3552d6fc0a460ef
Contents?: true
Size: 869 Bytes
Versions: 3
Compression:
Stored size: 869 Bytes
Contents
module ActiveModel module Validations class SumOfValidator < ActiveModel::EachValidator def check_validity! unless options[:attr_names] raise ArgumentError, "must supply :attr_names option" end end def validate_each(record, attribute, value) addends = options[:attr_names].map {|_| record[_] } return if value.blank? sum = addends.reject(&:blank?).sum unless value == sum record.errors.add(attribute, options[:message] || :sum_of, options.merge( attr_names: options[:attr_names].to_sentence, addends: addends.join(' + '), sum: sum, value: value, ) ) end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems