Made discard_changes use ->result_source->resultset->find
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / PK.pm
index 4889b63..23d2b3c 100644 (file)
@@ -2,7 +2,6 @@ package DBIx::Class::PK;
 
 use strict;
 use warnings;
-use Tie::IxHash;
 
 use base qw/DBIx::Class::Row/;
 
@@ -42,7 +41,7 @@ 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->find(map { $self->$_ } $self->primary_columns);
+  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;
@@ -61,7 +60,7 @@ a class method.
 
 sub id {
   my ($self) = @_;
-  $self->throw( "Can't call id() as a class method" ) unless ref $self;
+  $self->throw_exception( "Can't call id() as a class method" ) unless ref $self;
   my @pk = $self->_ident_values;
   return (wantarray ? @pk : $pk[0]);
 }
@@ -76,16 +75,15 @@ L<DBIx::Class::ObjectCache>.
 
 sub ID {
   my ($self) = @_;
-  $self->throw( "Can't call ID() as a class method" ) unless ref $self;
+  $self->throw_exception( "Can't call ID() as a class method" ) unless ref $self;
   return undef unless $self->in_storage;
   return $self->_create_ID(map { $_ => $self->{_column_data}{$_} } $self->primary_columns);
 }
 
 sub _create_ID {
-  my ($class,%vals) = @_;
+  my ($self,%vals) = @_;
   return undef unless 0 == grep { !defined } values %vals;
-  $class = ref $class || $class;
-  return join '|', $class, map { $_ . '=' . $vals{$_} } sort keys %vals;    
+  return join '|', ref $self || $self, $self->result_source->name, map { $_ . '=' . $vals{$_} } sort keys %vals;    
 }
 
 sub ident_condition {