DBIx::Class - Related Tables
Andy Wardley
abw at wardley.org
Tue Oct 7 11:51:35 BST 2008
Paul Makepeace wrote:
> One aspect, that befalls any abstraction system, is that you run into
> a situation where a lot of work is being hidden behind a simple
> interface.
True, although this is something that can be easily mitigated with a
bespoke object method or two and an orcish manoeuvre.
package My::User;
use base 'My::Database::Record';
sub roles {
my $self = shift;
return $self->{ roles } ||= {
map { $_->role => $_ }
$self->model->roles->fetch( user_id => $self->{ id } )
};
}
sub has_role {
my ($self, $role) = @_;
return $self->roles->{ $role };
}
These kind of methods can be auto-generated quite easily.
Nevertheless, it does require someone to think about these kind of
issues and design the system accordingly.
A
More information about the london.pm
mailing list