Relax sanity check in _resolve_relationship_condition
Peter Rabbitson [Fri, 13 Mar 2015 12:43:08 +0000 (13:43 +0100)]
It doesn't buy much and breaks legitimate class redirection techniques
(some of them even documented in the cookbook)

Changes
lib/DBIx/Class/ResultSource.pm

diff --git a/Changes b/Changes
index 5c9c049..104efbd 100644 (file)
--- a/Changes
+++ b/Changes
@@ -8,6 +8,9 @@ Revision history for DBIx::Class
     * Fixes
         - Protect destructors from rare but possible double execution, and
           loudly warn the user whenever the problem is encountered (GH#63)
+        - 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
         - Fix updating multiple CLOB/BLOB columns on Oracle
         - Fix incorrect collapsing-parser source being generated in the
           presence of unicode data among the collapse-points
index 03a12b0..8c8f4cc 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') )
     )
   ;