[Catalyst] Models and inflating
Alexander Tamm
alex at frantic.com
Mon Feb 23 20:05:49 GMT 2009
>> It looks a bit weird to me, but it seems to work. Should it work?
>
> You shouldn't do this (*), it is very confusing. Put functions like
> this in the row class, i.e. YourApp::Schema::Foo::User, so that all
> users of the schema have access to these methods.
The reason I want to do this (or something similar) is that I don't want
all the database-specific cruft in the class I'm editing. I'm trying to
keep the classes clean and separate the storage from the functionality.
If I put the functionality in the Schema::*, I will have about 400 lines
of code that I need to replicate across eight or more sites and the
classes won't be usable without DBIx::Class or Catalyst. I don't regard
that as a an option. Especially, since the Schema-classes are created by
the helper script.
If I use the method I describe, I can do this with inheritance and
keep my classes clean and available to applications that don't use
Catalyst or DBIx::Class.
> (*) BTW, the behavior you described does work intentionally, for cases
> when you need the objects in Catalyst to be different than with plain
> DBIC. I think it's a bad idea to use this "feature" except in very
> special cases -- of which "full_name" is not one.
full_name() was just a very simple example to illustrate the problem.
The real use case is a lot more complex and involves functionality that
has nothing to do with DBIx::Class.
Cheers,
Alex
More information about the Catalyst
mailing list