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

#&, #|

Constructor Details

#initialize(options = {}) ⇒ StringConstraint

Returns a new instance of StringConstraint.



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

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.



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

def maximum_length
  @maximum_length
end

#minimum_lengthObject (readonly)

Returns the value of attribute minimum_length.



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

def minimum_length
  @minimum_length
end

Instance Method Details

#==(other) ⇒ Object



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

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

#value(v) ⇒ Object



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

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