Index: lib/DBIx/Class/Schema/Loader/Base.pm =================================================================== --- lib/DBIx/Class/Schema/Loader/Base.pm (revision 6997) +++ lib/DBIx/Class/Schema/Loader/Base.pm (working copy) @@ -27,6 +27,7 @@ left_base_classes components resultset_components + component_overrides skip_relationships moniker_map inflect_singular @@ -155,6 +156,16 @@ C will be automatically added to the above C list if this option is set. +=head2 component_overrides + +Hashref of additional components to be loaded into specified table +classes. Use this if you wish to add components without adding to +all classes. + + component_overrides => { + MyTable => [ 'Ordered', 'InflateColumn::DateTime' ] + } + =head2 use_namespaces Generate result class names suitable for @@ -249,6 +260,16 @@ resultset_components /); + if (defined $self->component_overrides){ + my $co = $self->component_overrides; + croak 'component_overrides must be a hashref' unless + ref $co eq 'HASH'; + + map { + $co->{$_} = (ref $co->{$_} eq 'ARRAY' ? $co->{$_} : [ $co->{$_} ]) + } keys %$co; + } + push(@{$self->{components}}, 'ResultSetManager') if @{$self->{resultset_components}}; @@ -638,7 +659,8 @@ $self->_use ($table_class, @{$self->additional_classes}); $self->_inject($table_class, @{$self->additional_base_classes}); - $self->_dbic_stmt($table_class, 'load_components', @{$self->components}, 'Core'); + $self->_dbic_stmt($table_class, 'load_components', + @{$self->component_overrides->{$table_moniker}}, @{$self->components}, 'Core'); $self->_dbic_stmt($table_class, 'load_resultset_components', @{$self->resultset_components}) if @{$self->resultset_components};