instance method association_valid?

Ruby on Rails 8.0.4

Since v2.3.18 Private

Available in: v2.3.18 v3.0.20 v3.1.12 v3.2.22.5 v4.0.13 v4.1.16 v4.2.9 v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

association_valid?(association, record)

Returns whether or not the association is valid and applies any errors to the parent, self, if it wasn’t. Skips any :autosave enabled records if they’re marked_for_destruction? or destroyed.

Parameters

association req
record req
Source
# File activerecord/lib/active_record/autosave_association.rb, line 371
      def association_valid?(association, record)
        return true if record.destroyed? || (association.options[:autosave] && record.marked_for_destruction?)

        context = validation_context if custom_validation_context?
        return true if record.valid?(context)

        if context || record.changed_for_autosave?
          associated_errors = record.errors.objects
        else
          # If there are existing invalid records in the DB, we should still be able to reference them.
          # Unless a record (no matter where in the association chain) is invalid and is being changed.
          associated_errors = record.errors.objects.select { |error| error.is_a?(Associations::NestedError) }
        end

        if association.options[:autosave]
          return if equal?(record)

          associated_errors.each { |error|
            errors.objects.append(
              Associations::NestedError.new(association, error)
            )
          }
        elsif associated_errors.any?
          errors.add(association.reflection.name)
        end

        errors.any?
      end

Defined in activerecord/lib/active_record/autosave_association.rb line 371 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveRecord::AutosaveAssociation

Type at least 2 characters to search.

↑↓ navigate · open · esc close