module Toolchain::Validations::ClassMethods

Public Instance Methods

custom_validations() click to toggle source

@return [Array] all the custom validation operations to run.

# File lib/toolchain/validations.rb, line 20
def custom_validations
  @custom_validations ||= []
end
include_validations(validations) click to toggle source

Takes a Proc that contains validation logic and applies that to this class.

@param validations [Proc]

# File lib/toolchain/validations.rb, line 69
def include_validations(validations)
  class_eval(&validations)
end
validate(method) click to toggle source

Adds the provided method name to the validations array. This method will be called during validation time and allows you to do program-specific validations.

@param method [Symbol, String]

# File lib/toolchain/validations.rb, line 60
def validate(method)
  custom_validations.push(method.to_sym)
end
validates(*args) click to toggle source

Adds the provided validator to the validations array for the provided attribute key_path.

@param args [Array<Symbol, Hash>]

@example

class Device
  validates :name, presence: true
  validates :config, :url, presence: true
end
# File lib/toolchain/validations.rb, line 35
def validates(*args)
  options, key_path = args.pop, args

  _if = options.delete(:if)
  _unless = options.delete(:unless)

  options.each do |key, data|
    if validator = Helpers.find_validator(key)
      validations.push(
        key_path: key_path,
        validator: validator,
        data: data,
        if: _if,
        unless: _unless
      )
    end
  end
end
validations() click to toggle source

@return [Array] all the standard validation operations to run.

# File lib/toolchain/validations.rb, line 14
def validations
  @validations ||= []
end