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'svalueonrecordisArray<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.add 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.add attribute, error end else error = error_at( :element => element, :index => index, :prefix => "has non-String parameter name (#{parameter_name.inspect})" ) record.errors.add 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.add attribute, error end end else error = error_at( :element => element, :index => index, :prefix => 'has non-Array' ) record.errors.add attribute, error end end else record.errors.add attribute, "is not an Array. #{TYPE_SIGNATURE_SENTENCE}" end end |