Merge 'trunk' into 'DBIx-Class-current'
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Relationship / Base.pm
index c30c8e2..2e3cd89 100644 (file)
@@ -97,7 +97,7 @@ created, which calls C<create_related> for the relationship.
 =back
 
 Registers a relationship on the class. This is called internally by
-L<DBIx::Class::ResultSourceProxy> to set up Accessors and Proxies.
+DBIx::Class::ResultSourceProxy to set up Accessors and Proxies.
 
 =cut
 
@@ -272,7 +272,7 @@ sub find_or_create_related {
   my $updated_item = $obj->update_or_create_related('relname', \%col_data, \%attrs?);
 
 Update or create an item of a related class. See
-L<DBIx::Class::ResultSet/"update_or_create"> for details.
+L<DBIx::Class::ResultSet/update_or_create> for details.
 
 =cut
 
@@ -306,9 +306,11 @@ sub set_from_related {
     "condition for $rel is of type ".
     (ref $cond ? ref $cond : 'plain scalar')
   ) unless ref $cond eq 'HASH';
-  my $f_class = $self->result_source->schema->class($rel_obj->{class});
-  $self->throw_exception( "Object $f_obj isn't a ".$f_class )
-    unless $f_obj->isa($f_class);
+  if (defined $f_obj) {
+    my $f_class = $self->result_source->schema->class($rel_obj->{class});
+    $self->throw_exception( "Object $f_obj isn't a ".$f_class )
+      unless $f_obj->isa($f_class);
+  }
   $self->set_columns(
     $self->result_source->resolve_condition(
        $rel_obj->{cond}, $f_obj, $rel));