Module: Kennel::OptionalValidations

Included in:
Models::Record
Defined in:
lib/kennel/optional_validations.rb

Defined Under Namespace

Classes: ValidationMessage

Constant Summary collapse

UNIGNORABLE =
:unignorable

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



8
9
10
11
# File 'lib/kennel/optional_validations.rb', line 8

def self.included(base)
  base.settings :ignored_errors
  base.defaults(ignored_errors: -> { [] })
end

.valid?(parts) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/kennel/optional_validations.rb', line 13

def self.valid?(parts)
  parts_with_errors = parts.reject do |part|
    part.filtered_validation_errors.empty?
  end

  return true if parts_with_errors.empty?

  example_tag = nil

  Kennel.err.puts
  parts_with_errors.sort_by(&:safe_tracking_id).each do |part|
    part.filtered_validation_errors.each do |err|
      Kennel.err.puts "#{part.safe_tracking_id} [#{err.tag.inspect}] #{err.text.gsub("\n", " ")}"
      example_tag = err.tag unless err.tag == :unignorable
    end
  end
  Kennel.err.puts

  Kennel.err.puts <<~MESSAGE if example_tag
    If a particular error cannot be fixed, it can be marked as ignored via `ignored_errors`, e.g.:
      Kennel::Models::Monitor.new(
        ...,
        ignored_errors: [#{example_tag.inspect}]
      )

  MESSAGE

  false
end