[Catalyst] ways to do stuff and why

Matt S Trout dbix-class at trout.me.uk
Mon Aug 21 17:56:12 CEST 2006

Mark Blythe wrote:
>> I think the main bone of contention here is that Len is referring to his
>> persistence layer as the model, whereas I consider it to just be a persistence
>> layer - stuff like Model::DBIC::Schema is really only there for simple apps
>> where what you're modeling *is* the database. If you're modeling a domain,
>> then your Model::* stuff should be the model of the domain, and whether or not
>> said model happens to use DBIC stuff as its persistence store should be merely
>> an implementation detail that the Controller never sees.
> If the controller truly never sees DBIC stuff, does that mean that
> your model logic never returns DBIC objects?  For instance, let's say
> you have a logic method called findBestFit() that's supposed to return
> shoes that fit a given person and activity the best.  Would it return
> a DBIC ResultSet made up of Shoe row objects, or would findBestFit()
> deal with those objects only internally and construct something
> non-DBIC for the return?
> That's a choice I struggled with up front, and I finally decided that
> sticking with DBIC objects made better sense for me than inventing a
> whole new layer simply to abstract them and provide similar but not
> DBIC-specific interfaces.

I tend to return the DBIC objects but make sure the controller only ever 
interacts with *semantic* methods rather than the DBIC-specific 
find/search/etc. so I could swap it out for such an extra layer if I ever need to.

      Matt S Trout       Offering custom development, consultancy and support
   Technical Director    contracts for Catalyst, DBIx::Class and BAST. Contact
Shadowcat Systems Ltd.  mst (at) shadowcatsystems.co.uk for more information

+ Help us build a better perl ORM: http://dbix-class.shadowcatsystems.co.uk/ +

More information about the Catalyst mailing list