class Datacaster::Validator

Public Class Methods

create_active_model(validations) click to toggle source
# File lib/datacaster/validator.rb, line 7
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
model_name() click to toggle source
# File lib/datacaster/validator.rb, line 14
def self.model_name
  ActiveModel::Name.new(self, nil, "ValidatorModel")
end
new(validations, name) click to toggle source
# File lib/datacaster/validator.rb, line 24
def initialize(validations, name)
  @name = name
  @validator = self.class.create_active_model(validations)
end

Public Instance Methods

call(object) click to toggle source
Calls superclass method Datacaster::Base#call
# File lib/datacaster/validator.rb, line 29
def call(object)
  intermediary_result = super(object)
  object = intermediary_result.value

  @validator.value = object
  @validator.valid? ? Datacaster.ValidResult(object) : Datacaster.ErrorResult(@validator.errors[:value])
end
inspect() click to toggle source
# File lib/datacaster/validator.rb, line 37
def inspect
  "#<Datacaster::#{@name}Validator>"
end