my $club = $c->model("DB::Clubs") ->create({ some_data => "asdfasdf", venue => $id }); #### my $venue = $c->model("DB::Venue")->find($id); $venue->add_to_clubs({ some_club_data => "Without venue" }); #### # Inside MySchema::Result::Club. sub insert { my $self = shift; return $self if $self->in_storage; croak "No venue provided..." unless $self->venue; my $schema = $self->result_source->schema; croak "Venue is invalid..." unless $schema->resultset("Venue")->find($self->venue); $self->next::method(); } sub update { my $self = shift; my %to_update = $self->get_dirty_columns || return $self->next::method(@_); $to_update{venue} || return $self->next::method(@_); croak "Venue is invalid..." unless $schema->resultset("Venue")->find($to_update{venue}); $self->next::method(@_); }