Class: WellPositionsValidator

Inherits:
ActiveModel::Validator
  • Object
show all
Includes:
HasFilters
Defined in:
app/validators/well_positions_validator.rb

Overview

Validator to check the correct wells are being used Validates the positions of Wells

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from HasFilters

#exclude_marked_for_destruction

Constructor Details

#initialize(options) ⇒ WellPositionsValidator

Returns a new instance of WellPositionsValidator.

Parameters:

  • options (Hash)

Options Hash (options):

  • :valid_positions (Array)
  • :exclude_marked_for_destruction (Boolean)


13
14
15
16
# File 'app/validators/well_positions_validator.rb', line 13

def initialize(options)
  super
  @options = options
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



8
9
10
# File 'app/validators/well_positions_validator.rb', line 8

def options
  @options
end

Instance Method Details

#valid_positionsArray

Examples:

[‘A1’, ‘B1’, ‘C1’]

Returns:

  • (Array)


20
21
22
# File 'app/validators/well_positions_validator.rb', line 20

def valid_positions
  @valid_positions ||= options[:valid_positions]
end

#validate(record) ⇒ Object

Parameters:

  • record (ActiveRecord::Base)


25
26
27
28
29
30
31
32
33
34
35
36
# File 'app/validators/well_positions_validator.rb', line 25

def validate(record)
  well_positions = filtered(record.wells).collect(&:position)

  invalid_positions = (well_positions - valid_positions)

  return if invalid_positions.empty?

  invalid_wells = invalid_positions.join(',')
  valid_wells = valid_positions.join(',')

  record.errors.add(:wells, "#{invalid_wells} must be in positions #{valid_wells}")
end