Class: StrongerParameters::StringConstraint

Inherits:
Constraint
  • Object
show all
Defined in:
lib/stronger_parameters/constraints/string_constraint.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Constraint

#&, #required, #required?, #|

Constructor Details

#initialize(options = {}) ⇒ StringConstraint

Returns a new instance of StringConstraint.



8
9
10
11
# File 'lib/stronger_parameters/constraints/string_constraint.rb', line 8

def initialize(options = {})
  @maximum_length = options[:maximum_length] || options[:max_length]
  @minimum_length = options[:minimum_length] || options[:min_length]
end

Instance Attribute Details

#maximum_lengthObject (readonly)

Returns the value of attribute maximum_length.



6
7
8
# File 'lib/stronger_parameters/constraints/string_constraint.rb', line 6

def maximum_length
  @maximum_length
end

#minimum_lengthObject (readonly)

Returns the value of attribute minimum_length.



6
7
8
# File 'lib/stronger_parameters/constraints/string_constraint.rb', line 6

def minimum_length
  @minimum_length
end

Instance Method Details

#==(other) ⇒ Object



29
30
31
# File 'lib/stronger_parameters/constraints/string_constraint.rb', line 29

def ==(other)
  super && maximum_length == other.maximum_length && minimum_length == other.minimum_length
end

#value(v) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/stronger_parameters/constraints/string_constraint.rb', line 13

def value(v)
  if v.is_a?(String)
    if maximum_length && v.bytesize > maximum_length
      return InvalidValue.new(v, "can not be longer than #{maximum_length} bytes")
    elsif minimum_length && v.bytesize < minimum_length
      return InvalidValue.new(v, "can not be shorter than #{minimum_length} bytes")
    elsif !v.valid_encoding?
      return InvalidValue.new(v, 'must have valid encoding')
    end

    return v
  end

  InvalidValue.new(v, 'must be a string')
end