X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FRow.pm;h=77628ad2c98fd6bd7cf7649b63a73bd2bc8c4b15;hb=25c1ed5f32dfcefdc12df885669e1dcf9baabbe9;hp=5425fd80ce7fb5144113d96a7aabc6d7f42740ce;hpb=a4e58b18bffc45a7dd202c89209e68fbf5594098;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Row.pm b/lib/DBIx/Class/Row.pm index 5425fd8..77628ad 100644 --- a/lib/DBIx/Class/Row.pm +++ b/lib/DBIx/Class/Row.pm @@ -1221,11 +1221,16 @@ sub store_column { $self->throw_exception( "set_column called for ${column} without value" ) if @_ < 3; - # stringify all refs explicitly, guards against overloaded objects + return $self->{_column_data}{$column} = $value + unless length ref $value and my $vref = is_plain_value( $value ); + + # if we are dealing with a value/ref - there are a couple possibilities + # unpack the underlying piece of data and stringify all objects explicitly + # ( to accomodate { -value => ... } and guard against overloaded objects # with defined stringification AND fallback => 0 (ugh!) - $self->{_column_data}{$column} = ( length ref $value and is_plain_value( $value ) ) - ? "$value" - : $value + $self->{_column_data}{$column} = defined blessed $$vref + ? "$$vref" + : $$vref ; }