Class: AnyFieldValidator

Inherits:
ActiveModel::Validator
  • Object
show all
Defined in:
app/validators/any_field_validator.rb

Overview

AnyFieldValidator

Custom validator that checks if any of the provided fields are present to ensure creation of a non-empty record

Example:

class MyModel < ApplicationRecord
  validates_with AnyFieldValidator, fields: %w[type name url]
end

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ AnyFieldValidator

Returns a new instance of AnyFieldValidator.



15
16
17
18
19
20
21
# File 'app/validators/any_field_validator.rb', line 15

def initialize(*args)
  super

  if options[:fields].blank?
    raise 'Provide the fields options'
  end
end

Instance Method Details

#validate(record) ⇒ Object



23
24
25
26
27
28
# File 'app/validators/any_field_validator.rb', line 23

def validate(record)
  return unless one_of_required_fields.all? { |field| record[field].blank? }

  record.errors.add(:base, _("At least one field of %{one_of_required_fields} must be present") %
    { one_of_required_fields: one_of_required_fields })
end