doc fixes
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Row.pm
index 8a4bfc9..3606235 100644 (file)
@@ -19,7 +19,7 @@ DBIx::Class::Row - Basic row methods
 =head1 DESCRIPTION
 
 This class is responsible for defining and doing basic operations on rows
-derived from L<DBIx::Class::Table> objects.
+derived from L<DBIx::Class::ResultSource> objects.
 
 =head1 METHODS
 
@@ -98,8 +98,11 @@ sub update {
   $self->throw_exception( "Not in database" ) unless $self->in_storage;
   my %to_update = $self->get_dirty_columns;
   return $self unless keys %to_update;
+  my $ident_cond = $self->ident_condition;
+  $self->throw_exception("Cannot safely update a row in a PK-less table")
+    if ! keys %$ident_cond;
   my $rows = $self->result_source->storage->update(
-               $self->result_source->from, \%to_update, $self->ident_condition);
+               $self->result_source->from, \%to_update, $ident_cond);
   if ($rows == 0) {
     $self->throw_exception( "Can't update ${self}: row not found" );
   } elsif ($rows > 1) {
@@ -123,8 +126,11 @@ sub delete {
   my $self = shift;
   if (ref $self) {
     $self->throw_exception( "Not in database" ) unless $self->in_storage;
+    my $ident_cond = $self->ident_condition;
+    $self->throw_exception("Cannot safely delete a row in a PK-less table")
+      if ! keys %$ident_cond;
     $self->result_source->storage->delete(
-      $self->result_source->from, $self->ident_condition);
+      $self->result_source->from, $ident_cond);
     $self->in_storage(undef);
   } else {
     $self->throw_exception("Can't do class delete without a ResultSource instance")
@@ -323,17 +329,24 @@ sub is_changed {
 
 =head2 register_column($column, $column_info)
 
-  Registers a column on the class and creates an accessor for it
+  Registers a column on the class. If the column_info has an 'accessor' key,
+  creates an accessor named after the value if defined; if there is no such
+  key, creates an accessor with the same name as the column
 
 =cut
 
 sub register_column {
   my ($class, $col, $info) = @_;
-  $class->mk_group_accessors('column' => $col);
+  my $acc = $col;
+  if (exists $info->{accessor}) {
+    return unless defined $info->{accessor};
+    $acc = [ $info->{accessor}, $col ];
+  }
+  $class->mk_group_accessors('column' => $acc);
 }
 
 
-=item throw_exception
+=head2 throw_exception
 
 See Schema's throw_exception.