X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FDBIx-Class.git;a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FRelationship%2FProxyMethods.pm;fp=lib%2FDBIx%2FClass%2FRelationship%2FProxyMethods.pm;h=5f7578ae76244fafe906d873208e4cf116535523;hp=9623539a57441be76478996b50af870e1bdeb074;hb=32cff863db45d7f965a7587929a5db56dfb4ef75;hpb=fed15b9163bcb281a3a654643949a9cd1f9a3928 diff --git a/lib/DBIx/Class/Relationship/ProxyMethods.pm b/lib/DBIx/Class/Relationship/ProxyMethods.pm index 9623539..5f7578a 100644 --- a/lib/DBIx/Class/Relationship/ProxyMethods.pm +++ b/lib/DBIx/Class/Relationship/ProxyMethods.pm @@ -25,18 +25,17 @@ sub proxy_to_related { no strict 'refs'; no warnings 'redefine'; foreach my $meth_name ( keys %proxy_map ) { - my $proxy_to = $proxy_map{$meth_name}; + my $proxy_to_col = $proxy_map{$meth_name}; my $name = join '::', $class, $meth_name; - *$name = Sub::Name::subname $name, - sub { - my $self = shift; - my $val = $self->$rel; - if (@_ && !defined $val) { - $val = $self->create_related($rel, { $proxy_to => $_[0] }); - @_ = (); - } - return ($val ? $val->$proxy_to(@_) : undef); - } + *$name = Sub::Name::subname $name => sub { + my $self = shift; + my $relobj = $self->$rel; + if (@_ && !defined $relobj) { + $relobj = $self->create_related($rel, { $proxy_to_col => $_[0] }); + @_ = (); + } + return ($relobj ? $relobj->$proxy_to_col(@_) : undef); + } } }