cascades default to 0 when using extended rels
Daniel Ruoso [Sun, 13 Jun 2010 21:50:22 +0000 (18:50 -0300)]
BRANCH
lib/DBIx/Class/Relationship/HasMany.pm
lib/DBIx/Class/Relationship/HasOne.pm

diff --git a/BRANCH b/BRANCH
index 44f65d6..a462b18 100644 (file)
--- a/BRANCH
+++ b/BRANCH
@@ -80,3 +80,7 @@ What needs to be adjusted (non-exhaustive summary):
   and multiple codepaths expect _resolve_condition to always return something
   akin to $vals_from_related above. A grep for _resolve_condition will
   highlight the problematic use-cases
+
+Additional Note:
+
+When using extended_rels all cascade options default to 0.
index 21e637d..b8a9b4c 100644 (file)
@@ -49,11 +49,13 @@ sub has_many {
     $cond = { "foreign.${f_key}" => "self.${pri}" };
   }
 
+  my $default_cascade = ref $cond eq 'CODE' ? 0 : 1;
+
   $class->add_relationship($rel, $f_class, $cond, {
     accessor => 'multi',
     join_type => 'LEFT',
-    cascade_delete => 1,
-    cascade_copy => 1,
+    cascade_delete => $default_cascade,
+    cascade_copy => $default_cascade,
     %{$attrs||{}}
   });
 }
index 3f1160d..c37f5bf 100644 (file)
@@ -50,10 +50,14 @@ sub _has_one {
     $cond = { "foreign.${f_key}" => "self.${pri}" };
   }
   $class->_validate_has_one_condition($cond);
+
+  my $default_cascade = ref $cond eq 'CODE' ? 0 : 1;
+
   $class->add_relationship($rel, $f_class,
    $cond,
    { accessor => 'single',
-     cascade_update => 1, cascade_delete => 1,
+     cascade_update => $default_cascade,
+     cascade_delete => $default_cascade,
      ($join_type ? ('join_type' => $join_type) : ()),
      %{$attrs || {}} });
   1;