Class: ParametersValidator
- Inherits:
-
ActiveModel::EachValidator
- Object
- ActiveModel::EachValidator
- ParametersValidator
- Defined in:
- app/validators/parameters_validator.rb
Overview
Validates that attribute's value is Array
Constant Summary collapse
- TYPE_SIGNATURE_SENTENCE =
Sentence explaining the valid type signature for parameters.
'Valid parameters are an Array<Array(String, String)>.'
Instance Method Summary collapse
Instance Method Details
#validate_each(record, attribute, value) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'app/validators/parameters_validator.rb', line 7 def validate_each(record, attribute, value) if value.is_a? Array value.each_with_index do |element, index| if element.is_a? Array if element.length != 2 extreme = :few if element.length > 2 extreme = :many end length_error = length_error_at( :extreme => extreme, :element => element, :index => index ) record.errors[attribute] << length_error else parameter_name = element.first if parameter_name.is_a? String unless parameter_name.present? error = error_at( :element => element, :index => index, :prefix => "has blank parameter name" ) record.errors[attribute] << error end else error = error_at( :element => element, :index => index, :prefix => "has non-String parameter name (#{parameter_name.inspect})" ) record.errors[attribute] << error end parameter_value = element.second unless parameter_value.is_a? String error = error_at( :element => element, :index => index, :prefix => "has non-String parameter value (#{parameter_value.inspect})" ) record.errors[attribute] << error end end else error = error_at( :element => element, :index => index, :prefix => 'has non-Array' ) record.errors[attribute] << error end end else record.errors[attribute] << "is not an Array. #{TYPE_SIGNATURE_SENTENCE}" end end |