From: Ash Berlin Date: Wed, 3 Oct 2007 20:00:32 +0000 (+0000) Subject: Many-to-many relationships now warn if the utility methods would clash X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=35210a5deb760654793d66a8b8f49fa360745d12;p=dbsrgits%2FDBIx-Class-Historic.git Many-to-many relationships now warn if the utility methods would clash --- diff --git a/Changes b/Changes index 85e824d..649e5e8 100644 --- a/Changes +++ b/Changes @@ -4,6 +4,8 @@ Revision history for DBIx::Class foreign and self parts the wrong way round in the condition - ResultSetColumn::func() now returns all results if called in list context; this makes things like func('DISTINCT') work as expected + - Many-to-many relationships now warn if the utility methods would + clash 0.08007 2007-09-04 19:36:00 - patch for Oracle datetime inflation (abram@arin.net) diff --git a/lib/DBIx/Class/Relationship/ManyToMany.pm b/lib/DBIx/Class/Relationship/ManyToMany.pm index 1e6b93b..451e435 100644 --- a/lib/DBIx/Class/Relationship/ManyToMany.pm +++ b/lib/DBIx/Class/Relationship/ManyToMany.pm @@ -24,6 +24,13 @@ sub many_to_many { my $set_meth = "set_${meth}"; my $rs_meth = "${meth}_rs"; + for ($add_meth, $remove_meth, $set_meth, $rs_meth) { + warn "***************************************************************************\n". + "The many-to-many relationship $meth is trying to create a utility method called $_. This will overwrite the existing method on $class. You almost certainly want to rename your method or the many-to-many relationship, as your method will not be callable (it will use the one from the relationship instead.) YOU HAVE BEEN WARNED\n". + "***************************************************************************\n" + if $class->can($_); + } + $rel_attrs->{alias} ||= $f_rel; *{"${class}::${meth}_rs"} = sub {