class KnowItAll::Base

Public Class Methods

assert(*args) click to toggle source

DEPRECATED: Please use validate instead.

# File lib/know_it_all/base.rb, line 16
def self.assert(*args)
  warn "[DEPRECATION] `assert` is deprecated. Please use `validate` instead."
  validate(*args)
end
inherited(subclass) click to toggle source
# File lib/know_it_all/base.rb, line 11
def self.inherited(subclass)
  subclass.validations = validations.dup
end
validate(method_name, message = nil) click to toggle source
# File lib/know_it_all/base.rb, line 21
def self.validate(method_name, message = nil)
  if message.nil? && defined?(I18n)
    class_names = StringHelper.underscore(self.to_s).split("/")
    message = I18n.t(["policies", *class_names, method_name].join("."))
  end
  validations[method_name] = message
end
validations() click to toggle source
# File lib/know_it_all/base.rb, line 3
def self.validations
  @validations ||= {}
end
validations=(validations) click to toggle source
# File lib/know_it_all/base.rb, line 7
def self.validations=(validations)
  @validations = validations
end

Public Instance Methods

errors() click to toggle source
# File lib/know_it_all/base.rb, line 29
def errors
  self.class.validations.each
    .reject { |method_name, _| self.send(method_name) }
    .map do |_, message|
      if message.respond_to?(:call)
        message.call(self)
      else
        message
      end
    end
end