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)

(cherry pick of e4b79657)

Changes
lib/DBIx/Class/ResultSource.pm

diff --git a/Changes b/Changes
index 082475a..9cc1d49 100644 (file)
--- a/Changes
+++ b/Changes
@@ -3,6 +3,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 exception on complex update/delete under a replicated setup
           http://lists.scsys.co.uk/pipermail/dbix-class/2015-January/011903.html
index f75f393..4b8f1dd 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') )
     )
   ;