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