class ActiveRecord::Validations::AssociatedValidator

:nodoc:

def record_validation_context_for_association(record)

def record_validation_context_for_association(record)
  record.custom_validation_context? ? record.validation_context : nil
end

def valid_object?(record, context)

def valid_object?(record, context)
  (record.respond_to?(:marked_for_destruction?) && record.marked_for_destruction?) || record.valid?(context)
end

def validate_each(record, attribute, value)

:nodoc:
def validate_each(record, attribute, value)
  context = record_validation_context_for_association(record)
  if Array(value).reject { |association| valid_object?(association, context) }.any?
    record.errors.add(attribute, :invalid, **options.merge(value: value))
  end
end