Sha256: bc653b836e0c430f297180b26bca80607062e79d29c7b87a9951fdea8c03ecd1

Contents?: true

Size: 937 Bytes

Versions: 2

Compression:

Stored size: 937 Bytes

Contents

module Hydra
  module Validations
    #
    # EnumerableBehavior - a mixin for subclasses of ActiveModel::EachValidator 
    # adding validation for each member of an enumerable attribute value.
    #
    # Behavior includes 'fixing' each error message to include the specific value
    # which was invalid.
    #
    module EnumerableBehavior

      def validate_each(record, attribute, value)
        if value.respond_to?(:each)
          value.each do |v| 
            prev = record.errors[attribute].size rescue 0
            super(record, attribute, v)
            messages = record.errors[attribute]
            if messages && messages.size > prev
              record.errors.add(attribute, fixed_message(v, messages.pop))
            end
          end
        else
          super
        end
      end

      protected

      def fixed_message(value, message)
        "value \"#{value}\" #{message}"
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hydra-validations-0.3.1 lib/hydra/validations/enumerable_behavior.rb
hydra-validations-0.3.0 lib/hydra/validations/enumerable_behavior.rb