use sub::name to fix compat with moose method modifiers
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Relationship / Accessor.pm
index 6c93546..fb15f10 100644 (file)
@@ -1,8 +1,10 @@
-package # hide from PAUSE 
+package # hide from PAUSE
     DBIx::Class::Relationship::Accessor;
 
 use strict;
 use warnings;
+use Sub::Name ();
+use Class::Inspector ();
 
 sub register_relationship {
   my ($class, $rel, $info) = @_;
@@ -36,7 +38,7 @@ sub add_relationship_accessor {
     $class->inflate_column($rel,
       { inflate => sub {
           my ($val, $self) = @_;
-          return $self->find_or_create_related($rel, {}, {});
+          return $self->find_or_new_related($rel, {}, {});
         },
         deflate => sub {
           my ($val, $self) = @_;
@@ -48,6 +50,7 @@ sub add_relationship_accessor {
     );
   } elsif ($acc_type eq 'multi') {
     $meth{$rel} = sub { shift->search_related($rel, @_) };
+    $meth{"${rel}_rs"} = sub { shift->search_related_rs($rel, @_) };
     $meth{"add_to_${rel}"} = sub { shift->create_related($rel, @_); };
   } else {
     $class->throw_exception("No such relationship accessor type $acc_type");
@@ -56,7 +59,8 @@ sub add_relationship_accessor {
     no strict 'refs';
     no warnings 'redefine';
     foreach my $meth (keys %meth) {
-      *{"${class}::${meth}"} = $meth{$meth};
+      my $name = join '::', $class, $meth;
+      *$name = Sub::Name::subname($name, $meth{$meth});
     }
   }
 }