instance method
association_valid?
Ruby on Rails 8.0.4
Since v2.3.18 PrivateSignature
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
-
associationreq -
recordreq
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