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
-
#validate_each(record, attribute, value) ⇒ void
Validates that
attribute
'svalue
onrecord
isArray<Array(String, String)>
which is the only valid type signature for serialized parameters.
Instance Method Details
#validate_each(record, attribute, value) ⇒ void
This method returns an undefined value.
Validates that attribute
's value
on record
is Array<Array(String, String)>
which is the only valid type
signature for serialized parameters.
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 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'app/validators/parameters_validator.rb', line 19 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 |