Relax sanity check in _resolve_relationship_condition
Peter Rabbitson [Fri, 13 Mar 2015 12:43:08 +0000 (13:43 +0100)]
This woud be a clear regression for a broad range of downstream Apps
compared to the behavior of 0.08196

It doesn't buy much and breaks legitimate class redirection techniques
(some of them even documented in the cookbook)

(cherry pick of 7411a51d)

Changes
lib/DBIx/Class/ResultSource.pm

diff --git a/Changes b/Changes
index 9562a9c..f9d1bec 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,10 @@
 Revision history for DBIx::Class
 
+    * Fixes
+        - Relax the 'self_result_object' argument check in the relationship
+          resolution codepath, restoring exotic uses of inflate_result
+          http://lists.scsys.co.uk/pipermail/dbix-class/2015-January/011876.html
+
 0.082810 2014-10-25 13:58 (UTC)
     * Fixes
         - Fix incorrect collapsing-parser source being generated in the
index fea6327..9c6c13c 100644 (file)
@@ -1904,11 +1904,11 @@ sub _resolve_relationship_condition {
 
   $args->{condition} ||= $rel_info->{cond};
 
-  $self->throw_exception( "Argument 'self_result_object' must be an object of class '@{[ $self->result_class ]}'" )
+  $self->throw_exception( "Argument 'self_result_object' must be an object inheriting from DBIx::Class::Row" )
     if (
       exists $args->{self_result_object}
         and
-      ( ! defined blessed $args->{self_result_object} or ! $args->{self_result_object}->isa($self->result_class) )
+      ( ! defined blessed $args->{self_result_object} or ! $args->{self_result_object}->isa('DBIx::Class::Row') )
     )
   ;