discard changes now is forced to use master for replication. changed discard_changes...
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / PK.pm
index b2efdf8..bb820e2 100644 (file)
@@ -37,23 +37,8 @@ changes made since the row was last read from storage.
 
 sub discard_changes {
   my ($self) = @_;
-  delete $self->{_dirty_columns};
-  return unless $self->in_storage; # Don't reload if we aren't real!
-
-  my $reload = $self->result_source->resultset->find(
-    map { $self->$_ } $self->primary_columns
-  );
-  unless ($reload) { # If we got deleted in the mean-time
-    $self->in_storage(0);
-    return $self;
-  }
-
-  %$self = %$reload;
-  
-  # Avoid a possible infinite loop with
-  # sub DESTROY { $_[0]->discard_changes }
-  bless $reload, 'Do::Not::Exist';
-
+  my $storage = $self->result_source->schema->storage;
+  $storage->reload_row($self);
   return $self;
 }