Sha256: ba7a1a9382ef8eff45976e28578c431c360671de350ee47fb3c473190c735579

Contents?: true

Size: 715 Bytes

Versions: 3

Compression:

Stored size: 715 Bytes

Contents

module ComposedValidations
  class WithValidatedProperty < ::SimpleDelegator
    attr_reader :property, :validator
    def initialize(resource, property, validator)
      super(resource)
      @property = ComposedValidations::ValidatedProperty(property)
      @validator = validator
    end

    def class
      __getobj__.class
    end

    def valid?(*args)
      __getobj__.valid?(*args)
      unless validator.valid?(result)
        errors.add(property.validated_property, validator.message)
      end
      errors.blank?
    end

    def save(*args)
      return false unless valid?
      __getobj__.save(*args)
    end

    private

    def result
      __send__(property.property_accessor)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
composed_validations-0.0.4 lib/composed_validations/with_validated_property.rb
composed_validations-0.0.3 lib/composed_validations/with_validated_property.rb
composed_validations-0.0.2 lib/composed_validations/with_validated_property.rb