module ContextValidations::Model
Public Class Methods
included(base)
click to toggle source
# File lib/context_validations/model.rb, line 2 def self.included(base) base.class_eval do reset_callbacks(:validate) end base._validators.keys.each do |key| base._validators.delete(key) end end
Public Instance Methods
validations()
click to toggle source
The collection of validations assigned to this model instance
@return [Array]
# File lib/context_validations/model.rb, line 15 def validations @validations ||= [] end
validations=(validations)
click to toggle source
Use to set the validations collection assigned to this model instance
Pass an array of validator instances
@param [[ActiveMode::Validations::Validator]]
# File lib/context_validations/model.rb, line 24 def validations=(validations) @validations = validations.flatten.map do |validator| validator[:options][:class] = self.class validator[:class].new(validator[:options]) end end
Protected Instance Methods
run_validations!()
click to toggle source
# File lib/context_validations/model.rb, line 33 def run_validations! Array.wrap(validations).each do |validator| if validator.respond_to?(:setup) validator.setup(self.class) end if validator.options[:if] if validator.options[:if].respond_to?(:call) if validator.options[:if].call(self) validator.validate(self) end elsif self.send(validator.options[:if]) validator.validate(self) end elsif validator.options[:unless] if validator.options[:unless].respond_to?(:call) if !validator.options[:unless].call(self) validator.validate(self) end elsif !self.send(validator.options[:unless]) validator.validate(self) end else validator.validate(self) end end errors.empty? end
Private Instance Methods
_validators()
click to toggle source
# File lib/context_validations/model.rb, line 63 def _validators validations.inject({}) do |hash, validator| attribute = validator.attributes.first if hash.key?(attribute) hash[attribute] << validator else hash[attribute] = [validator] end hash end end