10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/measured/rails/validations.rb', line 10
def validate_each(record, attribute, measurable)
measured_config = record.class.measured_fields[attribute]
measured_class = measured_config[:class]
measurable_unit = record.public_send("#{ attribute }_unit")
measurable_value = record.public_send("#{ attribute }_value")
return unless measurable_unit.present? || measurable_value.present?
record.errors.add(attribute, message) if [measurable_unit.blank?, measurable_value.blank?].any?
record.errors.add(attribute, message) unless measured_class.valid_unit?(measurable_unit)
if options[:units]
valid_units = [options[:units]].flatten.map{|u| measured_class.conversion.to_unit_name(u) }
record.errors.add(attribute, message) unless valid_units.include?(measured_class.conversion.to_unit_name(measurable_unit))
end
options.slice(*CHECKS.keys).each do |option, value|
record.errors.add(attribute, message) unless measurable.public_send(CHECKS[option], value_for(value, record))
end
end
|