- load_classes now uses source_name and sets it if necessary
0.06002
+ - nuke ResultSource caching of ->resultset for consistency reasons
- fix for -and conditions when updating or deleting on a ResultSet
0.06001 2006-04-08 21:48:43
my ($class, $target, @to_inject) = @_;
{
no strict 'refs';
- unshift(@{"${target}::ISA"}, grep { $target ne $_ && !$target->isa($_)} @to_inject);
+ my %seen;
+ unshift( @{"${target}::ISA"},
+ grep { !$seen{ $_ }++ && $target ne $_ && !$target->isa($_) }
+ @to_inject
+ );
}
# Yes, this is hack. But it *does* work. Please don't submit tickets about
$schema->resultset('Actor')->roles();
$schema->resultset('Role')->search_related('actors', { Name => 'Fred' });
- $schema->resultset('ActorRole')->add_to_role({ Name => 'Sherlock Holmes'});
+ $schema->resultset('ActorRole')->add_to_roles({ Name => 'Sherlock Holmes'});
See L<DBIx::Class::Manual::Cookbook> for more.
'My::DBIC::Schema::Actor' );
My::DBIC::Schema::Actor->many_to_many( roles => 'actor_roles',
- 'My::DBIC::Schema::Roles' );
+ 'role' );
...
'resultset does not take any arguments. If you want another resultset, '.
'call it on the schema instead.'
) if scalar @_;
- return $self->{_resultset}
- if ref $self->{_resultset} eq $self->resultset_class;
- return $self->{_resultset} = $self->resultset_class->new(
+
+ # disabled until we can figure out a way to do it without consistency issues
+ #
+ #return $self->{_resultset}
+ # if ref $self->{_resultset} eq $self->resultset_class;
+ #return $self->{_resultset} =
+
+ return $self->resultset_class->new(
$self, $self->{resultset_attributes}
);
}
use lib qw(t/lib);
use DBICTest::ForeignComponent;
-plan tests => 1;
+plan tests => 2;
# Tests if foreign component was loaded by calling foreign's method
ok( DBICTest::ForeignComponent->foreign_test_method, 'foreign component' );
+# Test for inject_base to filter out duplicates
+{ package DBICTest::_InjectBaseTest;
+ use base qw/ DBIx::Class /;
+}
+DBICTest::_InjectBaseTest->inject_base( 'DBICTest::_InjectBaseTest', qw/
+ DBICTest::_InjectBaseTest::A
+ DBICTest::_InjectBaseTest::B
+ DBICTest::_InjectBaseTest::B
+ DBICTest::_InjectBaseTest::C
+/);
+is_deeply( \@DBICTest::_InjectBaseTest::ISA,
+ [qw/
+ DBICTest::_InjectBaseTest::A
+ DBICTest::_InjectBaseTest::B
+ DBICTest::_InjectBaseTest::C
+ DBIx::Class
+ /],
+ 'inject_base filters duplicates'
+);