Class: Bodhi::PrecisionValidator

Inherits:
Validator show all
Defined in:
lib/bodhi-slam/validators/precision.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Validator

constantize, #to_sym, #underscore

Constructor Details

#initialize(number) ⇒ PrecisionValidator

Returns a new instance of PrecisionValidator.



5
6
7
8
9
10
# File 'lib/bodhi-slam/validators/precision.rb', line 5

def initialize(number)
  if number.nil?
    raise ArgumentError.new("Expected :number to not be nil")
  end
  @number = number
end

Instance Attribute Details

#numberObject (readonly)

Returns the value of attribute number.



3
4
5
# File 'lib/bodhi-slam/validators/precision.rb', line 3

def number
  @number
end

Instance Method Details

#to_optionsObject



26
27
28
# File 'lib/bodhi-slam/validators/precision.rb', line 26

def to_options
  {self.to_sym => @number}
end

#validate(record, attribute, value) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/bodhi-slam/validators/precision.rb', line 12

def validate(record, attribute, value)
  unless value.nil?
    
    if value.is_a?(Array)
      unless value.empty?
        record.errors.add(attribute, "must contain only values with #{@number} decimal points") unless value.delete_if{ |v| decimals(v) == @number }.empty?
      end
    else
      record.errors.add(attribute, "must have #{@number} decimal points") if decimals(value) != @number
    end
    
  end
end