Sha256: c01da59c8166cc308dc629857f5c2bd01f5a08c4fe5a094dda22240508418f96
Contents?: true
Size: 953 Bytes
Versions: 2
Compression:
Stored size: 953 Bytes
Contents
require 'active_model' module Datacaster class Validator < Base @@validations = {} def self.create_active_model(validations) @@validations[validations] ||= Class.new do include ActiveModel::Validations attr_accessor :value def self.model_name ActiveModel::Name.new(self, nil, "ValidatorModel") end if validations.present? validates :value, validations end end.new end def initialize(validations, name) @name = name @validator = self.class.create_active_model(validations) end def cast(object) intermediary_result = super(object) object = intermediary_result.value @validator.value = object @validator.valid? ? Datacaster.ValidResult(object) : Datacaster.ErrorResult(@validator.errors[:value]) end def inspect "#<Datacaster::#{@name}Validator>" end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
datacaster-2.0.2 | lib/datacaster/validator.rb |
datacaster-2.0.1 | lib/datacaster/validator.rb |