Sha256: d12f127eefc521e727b38cebb83cbda5acc7fdbd38fc3020b8e50cc55b612fa6

Contents?: true

Size: 863 Bytes

Versions: 6

Compression:

Stored size: 863 Bytes

Contents

module ActiveModel

  module Validations

    class NestedUniquenessValidator < EachValidator
      def validate_each(record, attr_name, value)
        uniq_value, existing_objects, first_element = options[:uniq_value], [], nil

        record.send(attr_name).each do |object|
          next if Helpers.marked_for_destruction?(object)

          first_element = object if first_element.nil?

          if existing_objects.include?(object.send(uniq_value))
            object.errors.add(uniq_value, :taken)
            record.errors.add(attr_name, :taken)
          else
            existing_objects << object.send(uniq_value)
          end
        end

      end
    end

    module HelperMethods
      
      def validates_nested_uniqueness(*attr_names)
        validates_with NestedUniquenessValidator, _merge_attributes(attr_names)
      end

    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
object_attorney-2.10.12 not_used/nested_uniqueness_validator.rb
object_attorney-2.10.11 not_used/nested_uniqueness_validator.rb
object_attorney-2.10.10 not_used/nested_uniqueness_validator.rb
object_attorney-2.10.9 not_used/nested_uniqueness_validator.rb
object_attorney-2.10.7 not_used/nested_uniqueness_validator.rb
object_attorney-2.10.6 not_used/nested_uniqueness_validator.rb