[Catalyst] How to access DBIC schema from class method?

seasprocket at gmail.com seasprocket at gmail.com
Wed Aug 11 00:57:11 GMT 2010


I'm confused about the "right" way to get a schema instance from within a
class method. If I've already got a resultset or resultsource instance, it's
easy. But from a class method within my model? Do I create a new connection
every time I need one, ie. MyApp::Schema->connect()?

To be specific:

package MyApp::Schema::Result::User;
use base 'DBIx::Class::Core';
...

sub create_user {
    my ($class, $params) =3D @_;
    # Want to call $user_rs->create() here after I've validated data.
    # my $schema =3D MyApp::Schema->connect()?
}

My suspicion is that this should be an instance method, bc it represents the
table, not a user object. And the way to get an instance is to call
$rs->result_source on a result set. But when I call:
      $c->model('DB::User')->result_source->create_user($params) it fails
with the msg:

Can't locate object method "create_user" via package
"DBIx::Class::ResultSource::Table"






-- =

Bikewise: http://www.bikewise.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20100810/efc34=
dc9/attachment.htm


More information about the Catalyst mailing list