[CDBI] has_a infation of a Time::Piece woes

William Ross will at spanner.org
Mon Oct 24 17:47:33 BST 2005


> <snip>
>
> For (1) I tried blessing an empty array into Time::Piece. Same out of
> range error.
>
> So i tried this for (2)  which from reading the docs , seems it  
> should work. :
>
> __PACKAGE__->has_a("finished" => 'Time::Piece',
>         inflate => sub {
>             my $t = shift;
>             if ($t =~ /^0000-/) {
>                   return;  # This makes Time::Piece have current time.
>                   # return 0;      # Has beginning of epoch (Jan 1  
> 1970)
>             }
>             else {
>                 return Time::Piece->strptime($t, "%Y-%m-%d %T");
>             }
>         },
>       . . .
> );
>
>
> But what is happening is the value my inflate sub returns is getting
> passed to the Time::Piece constructor so i am getting some Times i do
> not want..

Have you overridden _croak()? Your code wouldn't normally work  
because Class::DBI::Relationship::HasA will call _croak if the return  
value of the custom inflation method is not blessed into the class it  
expects to see. Which isn't very helpful in your case.

I'd suggest you write a simple subclass of Time::Piece that  
stringifies the way you want it to.

best

will






More information about the ClassDBI mailing list