Make 'filter' rels work half-way sanely with partial prefetch
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Relationship / BelongsTo.pm
index 76ffb50..df95541 100644 (file)
@@ -28,19 +28,19 @@ sub belongs_to {
     $class->ensure_class_loaded($f_class);
     my %f_primaries = map { $_ => 1 } try { $f_class->_pri_cols }
       catch {
-        $class->throw_exception( "Can't infer join condition for ${rel} on ${class}: $_");
+        $class->throw_exception( "Can't infer join condition for '$rel' on ${class}: $_");
       };
 
     my ($pri, $too_many) = keys %f_primaries;
     $class->throw_exception(
-      "Can't infer join condition for ${rel} on ${class}; ".
-      "${f_class} has multiple primary keys"
+      "Can't infer join condition for '$rel' on ${class}: "
+    . "${f_class} has multiple primary keys"
     ) if $too_many;
 
     my $fk = defined $cond ? $cond : $rel;
     $class->throw_exception(
-      "Can't infer join condition for ${rel} on ${class}; ".
-      "$fk is not a column of $class"
+      "Can't infer join condition for '$rel' on ${class}: "
+    . "'$fk' is not a column of $class"
     ) unless $class->has_column($fk);
 
     $cond = { "foreign.${pri}" => "self.${fk}" };
@@ -73,6 +73,8 @@ sub belongs_to {
       and
     keys %$cond == 1
       and
+    (keys %$cond)[0] =~ /^foreign\./
+      and
     $class->has_column($rel)
   ) ? 'filter' : 'single';