class ChainedValidation::Base
Public Class Methods
new(object)
click to toggle source
# File lib/chained_validation/base.rb, line 3 def initialize(object) @object = object @validations = [] set_rules end
Public Instance Methods
validate()
click to toggle source
# File lib/chained_validation/base.rb, line 9 def validate ChainedValidation::Validate.new(@validations).claim end
validate!()
click to toggle source
# File lib/chained_validation/base.rb, line 13 def validate! end
Private Instance Methods
set_rules()
click to toggle source
# File lib/chained_validation/base.rb, line 18 def set_rules class << self files = Dir["#{File.dirname(__FILE__)}/rules/**/*.rb"].map { |file| File.basename(file, ".rb") } rules = files.map { |file| file.split('_').map { |name| name.capitalize }.join('') } rules = Hash[rules.zip(files)] rules.each do |klasse, methode| define_method(:"#{methode}") do |*args| raise ArgumentError, "wrong number of arguments (given #{[*args].size}, expected 1)" if [*args].size > 1 rule = ChainedValidation::Rules.const_get(klasse).new({ object: @object, input: [*args].first }).perform @validations.push(rule) self end end end end