use strict;
use warnings;
-use Carp::Clan qw/^DBIx::Class/;
+use DBIx::Class::Carp;
use Sub::Name qw/subname/;
use Scalar::Util qw/blessed/;
unless blessed ($obj);
my $rel_source = $self->search_related($rel)->result_source;
my $cond = $rel_source->relationship_info($f_rel)->{cond};
- my $link_cond;
- if (ref $cond eq 'CODE') {
- my ($cond_should_join, $cond_optimized) = $rel_source->_resolve_condition
- ($cond, $obj, $f_rel);
- if ($cond_optimized) {
- $link_cond = $cond_optimized;
- } else {
- $self->throw_exception('Extended relationship '.$rel.
- ' requires optimized version for ManyToMany.');
- }
- } else {
- $link_cond = $rel_source->_resolve_condition
- ($cond, $obj, $f_rel);
- }
+ my ($link_cond, $crosstable) = $rel_source->_resolve_condition(
+ $cond, $obj, $f_rel, $f_rel
+ );
+
+ $self->throw_exception(
+ "Custom relationship '$rel' does not resolve to a join-free condition, "
+ ."unable to use with the ManyToMany helper '$f_rel'"
+ ) if $crosstable;
+
$self->search_related($rel, $link_cond)->delete;
};