package MyApp::Controller::Region; use Moose; BEGIN { extends qw(Catalyst::Controller); } has app_class => ( is => 'ro' ); has regions => ( is => 'ro', required => 1, lazy => 1, isa => 'ArrayRef', auto_deref => 1, default => sub { # using model and storing bit of data in attributes return [ shift()->region_rs->all ]; } ); # remembering app_class around BUILDARGS => sub { my $next = shift; return { %{ $next->(@_) }, app_class => $_[1], }; }; sub region_rs { # accessing the model return shift()->app_class->model('DB::Region'); }