Class: WellCombinationsValidator

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

Overview

Validator for well combinations Validates the combinations of Wells

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from HasFilters

#exclude_marked_for_destruction

Constructor Details

#initialize(options) ⇒ WellCombinationsValidator

Returns a new instance of WellCombinationsValidator.

Parameters:

  • options (Hash)

Options Hash (options):

  • :valid_combinations (Array)
  • :exclude_marked_for_destruction (Boolean)


13
14
15
16
# File 'app/validators/well_combinations_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_combinations_validator.rb', line 8

def options
  @options
end

Instance Method Details

#valid_combinationsArray

Examples:

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

Returns:

  • (Array)


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

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

#validate(record) ⇒ Object

Parameters:

  • record (ActiveRecord::Base)


25
26
27
28
29
30
31
# File 'app/validators/well_combinations_validator.rb', line 25

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

  return if valid_combinations.include?(well_positions)

  record.errors.add(:wells, "must be in a valid order, currently #{well_positions.join(',')}")
end