On Fri, Oct 16, 2009 at 7:31 AM, J. Shirley <[email protected]> wrote:
> What database do you use? In MySQL and SQLite I get no exception at all:
>
Postgresql.
>
> $ perl -Ilib -e 'use MyApp; my $obj =
> MyApp->model('Schema::User')->find("bogus"); print "defined? " . ( defined
> $obj ? "yes" : "no" ) . "\n"';
> no
>
DBIx::Class::ResultSet::find(): DBI Exception: DBD::Pg::st execute failed:
ERROR: invalid input syntax for integer: "bogus" [for Statement "SELECT
me.id ...
sub safe_find {
> my ( $self, $id ) = @_;
> if ( $id =~ /^(\d+)$/ ) {
> return $self->find($1);
> }
> die "I pity the fool";
> }
>
Yes, that's one approach. But, I'm not sure I can think of a reason why I
would not want to always do that, so might as well just override find (or
really search_rs, as that is what is called by find) and check id (or ids)
there. But, there need to think about "where", "columns", and so on.
--
Bill Moseley
[email protected]
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/