X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FRelationship%2FProxyMethods.pm;h=ee49fe8f848a8dff1df9de7eab4f0072fbead13d;hb=HEAD;hp=f7585a7dba54704b9094e98087d0ebc7bafa9fb3;hpb=e50536940adf2ebaef907a0c29ae37fbd5ce95b1;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Relationship/ProxyMethods.pm b/lib/DBIx/Class/Relationship/ProxyMethods.pm index f7585a7..ee49fe8 100644 --- a/lib/DBIx/Class/Relationship/ProxyMethods.pm +++ b/lib/DBIx/Class/Relationship/ProxyMethods.pm @@ -24,11 +24,18 @@ sub proxy_to_related { my ($class, $rel, $proxy_args) = @_; my %proxy_map = $class->_build_proxy_map_from($proxy_args); - quote_sub "${class}::$_", sprintf( <<'EOC', $rel, $proxy_map{$_} ) + my @qsub_args = ( {}, { + attributes => [qw( + DBIC_method_is_proxy_to_relationship + DBIC_method_is_generated_from_resultsource_metadata + )], + } ); + + quote_sub "${class}::$_", sprintf( <<'EOC', $rel, $proxy_map{$_} ), @qsub_args my $self = shift; my $relobj = $self->%1$s; if (@_ && !defined $relobj) { - $relobj = $self->related_resultset(q{%1$s})->new_result({ %2$s => $_[0] })->insert; + $relobj = $self->create_related( q{%1$s} => { %2$s => $_[0] } ); @_ = (); } $relobj ? $relobj->%2$s(@_) : undef;