[Dbix-class] result_source_instance error using inflate_column
Mark Hedges
hedges at scriptdolphin.com
Fri Nov 13 20:30:36 GMT 2009
On Fri, 13 Nov 2009, Peter Rabbitson wrote:
> Mark Hedges wrote:
> > I get this error for any class in which I try to use
> > inflate_column(), even if I have empty stub coderefs for
> > inflate and deflate. This is in a test script by itself,
> > I'm not using Catalyst. I saw some archive messages about
> > this error and tried the suggestions but I don't see what
> > I'm doing wrong...
> >
> >
> > Can't locate object method "result_source_instance" via package "DeSpam::DC::Lame" at /usr/lib/perl5/site_perl/5.8.8/DBIx/Class/ResultSourceProxy.pm line 47, <DATA> line 114.
> >
> > ###########
> >
> > package DeSpam::DC::Lame;
> > use strict;
> > use warnings FATAL => 'all';
> > use English '-no_match_vars';
> >
> > use base qw( DBIx::Class );
> > __PACKAGE__->load_components(qw( InflateColumn Core ));
> >
> > my %allowed = map {($_ => 1)} qw( foo bar biz baz );
> >
> > __PACKAGE__->inflate_column('lamer', {
> > inflate => sub { [ split m{\s*,\s*}mxs, shift ] },
> > deflate => sub {
> > my $value = shift;
> > die "non-array reftype for deflating lamer" if ref $value ne 'ARRAY';
> > die "lamer value '$_' not allowed" for grep !exists $allowed{$_}, @{$value};
> > return join q{,}, @{$value};
> > },
> > });
> >
> > ###############
>
> ^^^ A resultsource is useless until you declare a table() on it (this is not only
> an accessor but also an initializer).
Perhaps you did not read my example. I am not using a
resultsource explicitly. I am simply trying to 'use' the
package above, which includes an inflate_column statement.
If I comment out the __PACKAGE__->inflate_column statement,
it loads fine with 'use'. Otherwise, 'use' generates the
result_source error.
Help - take it seriously - please?
Mark
More information about the DBIx-Class
mailing list