[Catalyst] Model--best practice help

Dr. Jennifer Nussbaum bg271828 at yahoo.com
Sun Oct 5 18:03:09 BST 2008


Im going through my code, and trying to really think about how i can make it work well. Its a mess, i am realising, and i need advice on the best way
to clean it up.

Its clear that there are things in my Model that should be in a Controller; that i dont need help with.

My problem is that i have two different Models, and dont know how they should be combined.

In particular, im using DBIC, so i have a setup where i have MyApp::Schema::Main, which only looks like:

package MyApp::Schema::Main;
use base qw/DBIx::Class::Schema/;

__PACKAGE__->load_classes(qw/Book Author/);

1;

(the config stuff is in a separate config file:)

<Model::MyAppDB>
	schema_class MyApp::Schema::Main
	connect_info #######
</Model::MyAppDB>

Then i'll have MyApp::Schema::Main::Book of whatever that looks like

package MyApp::Schema::Main::Book;

use base qw/DBIx::Class/;

__PACKAGE__->load_components(qw/PK::Auto Core/);
(etc., other DBIC stuff)

The problem is i also have a MyApp::Model::Book, and ive usually put non-DBIC things in there, like if i have a "get_results" method thats
specific to my Cat app and not appropriate for the schema, ill put it there. That starts like

package MyApp::Model::Book;
use strict;
use warnings;
use base 'Catalyst::Model';

So ive got these two model classes, one i call with $c->model('MyAppDB::Book') and the other with $c->model('Book'). The problem
is, i have some things that are Cat specific and i dont want them in my schema class (becaues i use this in non-Cat apps), but i dont want to 
have to have two separate models that i call by different names at
different times.

Whats the way im supposed to be setting these up?

Thanks!

Jen



      



More information about the Catalyst mailing list