module Bodhi::Validations

Public Class Methods

included(base) click to toggle source
# File lib/bodhi-slam/validations.rb, line 135
def self.included(base)
  base.extend(ClassMethods)
  base.instance_variable_set(:@validators, Hash.new)
end

Public Instance Methods

errors() click to toggle source

Returns a Bodhi::Errors object that holds all information about attribute error messages.

class User
  include Bodhi::Validations

  attr_accessor :name
  validates :name, required: true
end

user = User.new
user.valid? # => false
user.errors # => #<Bodhi::Errors:0x007fbff403e808 @messages={name:["is required"]}>
# File lib/bodhi-slam/validations.rb, line 79
def errors
  @errors ||= Bodhi::Errors.new
end
invalid?() click to toggle source

Runs all validations and returns false if no errors are present otherwise true.

# File lib/bodhi-slam/validations.rb, line 131
def invalid?
  !valid?
end
valid?() click to toggle source

Runs all validations and returns true if no errors are present otherwise false.

class User
  include Bodhi::Validations

  attr_accessor :name
  validates :name, required: true
end

user = User.new
user.valid? # => false
user.errors.full_messages # => ["name is required"]

user.name = "Bob"
user.valid? # => true
user.errors.full_messages # => []
# File lib/bodhi-slam/validations.rb, line 125
def valid?
  validate!
  !errors.messages.any?
end
validate!() click to toggle source

Runs all class validations on object and adds any errors to the Bodhi::Errors object

class User
  include Bodhi::Validations

  attr_accessor :name
  validates :name, required: true
end

user = User.new
user.validate! # => nil
user.errors.full_messages # => ["name is required"]

user.name = "Bob"
user.validate! # => nil
user.errors.full_messages # => []
# File lib/bodhi-slam/validations.rb, line 99
def validate!
  errors.clear
  self.class.validators.each_pair do |attribute, array|
    value = self.send(attribute)
    array.each do |validator|
      validator.validate(self, attribute, value)
    end
  end
end