-package DBIx::Class::Relationship::ProxyMethods;
+package # hide from PAUSE
+ DBIx::Class::Relationship::ProxyMethods;
use strict;
use warnings;
-
+use Sub::Name ();
use base qw/DBIx::Class/;
-sub add_relationship {
- my ($class, $rel, @rest) = @_;
- my $ret = $class->next::method($rel => @rest);
- if (my $proxy_list = $class->relationship_info($rel)->{attrs}{proxy}) {
+sub register_relationship {
+ my ($class, $rel, $info) = @_;
+ if (my $proxy_list = $info->{attrs}{proxy}) {
$class->proxy_to_related($rel,
(ref $proxy_list ? @$proxy_list : $proxy_list));
}
- return $ret;
+ $class->next::method($rel, $info);
}
sub proxy_to_related {
no strict 'refs';
no warnings 'redefine';
foreach my $proxy (@proxy) {
- *{"${class}::${proxy}"} =
+ my $name = join '::', $class, $proxy;
+ *$name = Sub::Name::subname $name,
sub {
my $self = shift;
my $val = $self->$rel;