X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FRelationship%2FCascadeActions.pm;h=e5afd352701844ccb4f23220b0a13a4b15e560a1;hb=974fe5e894412569f1252a95cf62612fef5f687d;hp=aa880433dcd04aba568eada4e9ecb92b9a09e41e;hpb=b044b5d3118a1a147351cb337a49f788adc7e3be;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Relationship/CascadeActions.pm b/lib/DBIx/Class/Relationship/CascadeActions.pm index aa88043..e5afd35 100644 --- a/lib/DBIx/Class/Relationship/CascadeActions.pm +++ b/lib/DBIx/Class/Relationship/CascadeActions.pm @@ -4,6 +4,11 @@ package # hide from PAUSE use strict; use warnings; +our %_pod_inherit_config = + ( + class_map => { 'DBIx::Class::Relationship::CascadeActions' => 'DBIx::Class::Relationship' } + ); + sub delete { my ($self, @rest) = @_; return $self->next::method(@rest) unless ref $self; @@ -33,6 +38,10 @@ sub update { my %rels = map { $_ => $source->relationship_info($_) } $source->relationships; my @cascade = grep { $rels{$_}{attrs}{cascade_update} } keys %rels; foreach my $rel (@cascade) { + next if ( + $rels{$rel}{attrs}{accessor} eq 'single' + && !exists($self->{_relationship_data}{$rel}) + ); $_->update for grep defined, $self->$rel; } return $ret;