package STI::Person; use strict; use warnings; use base 'DBIx::Class'; __PACKAGE__->load_components(qw/PK::Auto Core/); __PACKAGE__->table('person'); __PACKAGE__->add_columns( id => { data_type => 'integer', is_auto_increment => 1, }, name => { data_type => 'varchar', is_nullable => 1, }, employer => { data_type => 'varchar', is_nullable => 1, }, type => { data_type => 'varchar' } ); __PACKAGE__->set_primary_key('id'); __PACKAGE__->resultset_class('STI::Person::ResultSet'); sub insert { my ($self,@rest) = shift; $self->type(ref($self->result_source->source_name); $self->next::method(@_); } sub update { my ($self,@rest) = shift; $self->type($self->result_source->source_name); $self->next::method(@_); } package STI::Person::ResultSet; use base 'DBIx::Class::ResultSet'; sub search_rs { my ($self,@rest) = @_; my $ret = $self->next::method(@rest); $ret->{cond}->{type} = $self->result_source->source_name; return $ret; } 1;