Class: Grape::Validations::Validators::LengthValidator
- Defined in:
- lib/grape/validations/validators/length_validator.rb
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#initialize(attrs, options, required, scope, opts) ⇒ LengthValidator
constructor
A new instance of LengthValidator.
- #validate_param!(attr_name, params) ⇒ Object
Methods inherited from Base
default_message_key, #fail_fast?, inherited, new, #validate, #validate!
Constructor Details
#initialize(attrs, options, required, scope, opts) ⇒ LengthValidator
Returns a new instance of LengthValidator.
7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/grape/validations/validators/length_validator.rb', line 7 def initialize(attrs, , required, scope, opts) super @min, @max, @is = @options.values_at(:min, :max, :is) validate_boundary!(:min, @min) validate_boundary!(:max, @max) raise ArgumentError, "min #{@min} cannot be greater than max #{@max}" if @min && @max && @min > @max return if @is.nil? raise ArgumentError, 'is must be an integer greater than zero' unless @is.is_a?(Integer) && @is.positive? raise ArgumentError, 'is cannot be combined with min or max' unless @min.nil? && @max.nil? end |
Instance Method Details
#validate_param!(attr_name, params) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/grape/validations/validators/length_validator.rb', line 20 def validate_param!(attr_name, params) param = params[attr_name] return unless param.respond_to?(:length) return unless (!@min.nil? && param.length < @min) || (!@max.nil? && param.length > @max) || (!@is.nil? && param.length != @is) validation_error!(attr_name, do if @min && @max translate(:length, min: @min, max: @max) elsif @min translate(:length_min, min: @min) elsif @max translate(:length_max, max: @max) else translate(:length_is, is: @is) end end) end |