[Catalyst] Inheritance problem in "used" model
Sean Davis
sdavis2 at mail.nih.gov
Tue Dec 6 16:47:33 CET 2005
I have the following inheritance structure for a couple of model classes set
up. I can use these model classes outside of Catalyst without problems.
However, when I "use" OligoMap::Oligo in a controller
use OligoMap::Oligo;
my $oligo = OligoMap::Oligo->new($c->req->snippets->[0]);
I get:
Caught exception "Can't locate object method "sqlengine" via package
"OligoMap::Oligo" ....
Why is my sqlengine method not inherited under catalyst but is outside of
catalyst? (There is a problem with my concept of inheritance, likely, but I
can't figure out what that is.)
Thanks,
Sean
package OligoMap;
use strict;
use DBIx::SQLEngine;
use Data::Dumper;
sub new {
my $proto = shift;
my $class = ref($proto) || $proto;
my $self = {};
bless($self,$class);
return($self);
}
sub sqlengine {
my $self = shift;
if (exists($self->{_sqlengine})) {
return($self->{_sqlengine});
}
my $sqle = DBIx::SQLEngine->new('dbi:Pg:dbname=annodb4;host=sherlock',
'sdavis',
'mic2222') or die;
$self->{_sqlengine} = $sqle;
}
package OligoMap::Oligo;
use strict;
use OligoMap;
our @ISA = (qw/OligoMap/);
sub new {
my $proto = shift;
my $oligo = shift;
my $class = ref($proto) || $proto;
my $self = {};
bless($self,$class);
$self->SUPER::new(@_);
$self->initialize($oligo);
return($self);
}
sub cghProbes {
my $self = shift;
if (exists($self->{_cghprobes})) {
return ($self->{_cghprobes});
}
my $sql = 'select chrom,tstart,tend,strand,score,max_block_size,db from
oligo.cghprobes natural join oligo.oligo where oligo=?';
$self->{_cghprobes} =
$self->sqlengine->fetch_select(sql=>[$sql,$self->name]);
return($self->{_cghprobes})
}
More information about the Catalyst
mailing list