X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FPK.pm;h=fc03c57619c1522d8ec3a01cdeb2b14b213b13d6;hb=451517e7031ac72038f54a9750fac60dab0a4b3c;hp=ad706901074eb6a87a2492f51f93a54ed3223608;hpb=c687b87e860c97257542dda2b14c0137f6fbc583;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/PK.pm b/lib/DBIx/Class/PK.pm index ad70690..fc03c57 100644 --- a/lib/DBIx/Class/PK.pm +++ b/lib/DBIx/Class/PK.pm @@ -50,7 +50,15 @@ sub retrieve { sub discard_changes { my ($self) = @_; delete $self->{_dirty_columns}; - $_[0] = $self->retrieve($self->id); + return unless $self->in_database; # Don't reload if we aren't real! + my ($reload) = $self->retrieve($self->id); + unless ($reload) { # If we got deleted in the mean-time + $self->in_database(0); + return $self; + } + $self->store_column($_ => $reload->get_column($_)) + foreach keys %{$self->_columns}; + return $self; } sub id {