Matt S Trout wrote:
> On Tue, May 05, 2009 at 08:37:37AM -0700, Morgon Hed wrote:
>> Ok - I've updated to 0.08102 and now I have a make_column_dirty but it does
>> not seem to work.
>>
>> Here is what I do for trying it out:
>>
>> I have a class "SMU::Wrapper" that simply wraps some xml, it has an accessor
>> "stuff" that allows me to get/set the wrapped xml.
>>
>> I now inflate/deflate column "xml" like this:
>>
>> __PACKAGE__->inflate_column('xml',
>> {
>> inflate => sub { SMU::Wrapper->new( stuff
>> => $_[0], row => $_[1], column => "xml" ) },
>> deflate => sub { $_[0]->stuff },
>> }
>> );
>>
>>
>> Now I do a search and a find like this:
>>
>> my $rs = $schema->resultset('Stream')->search(
>> {},
>> {
>> select => [ 'id', {
>> 'xmltype.getCLobVal' => 'xml' } ],
>> as => [qw/id xml/],
>> }
>> );
>>
>>
>> my $s = $rs->find(1);
>>
>> This allows me to retrieve my object representing primary key 1 with
>> inflated column, so far so good.
>>
>> I can now do the following:
>>
>> print $s->xml->stuff; # this prints the correct xml read from the db
>>
>> $s->xml->stuff("<hubba/>"); # now I change it
>>
>> print $s->xml->stuff; # print it again to verify it really has changed
>> (in memory)
>>
>> $s->make_column_dirty('xml');
>>
>> $s->update;
>>
>> SMU::Schema->commit;
>>
>> Now I trace with DBIC_TRACE=1 and I can see that indeed the call to
>> make_column_dirty results in an update to the database, but unfortunately it
>> is not updated to the new value I have set it to but again to the old value
>> it had in the database before I changed to "<hubba/>"...
>
> Oh FFS, that's not triggering the deflate of course.
>
> I suspect what you actually want for the moment is:
>
> $s->xml($s->xml);
>
> Thoughts on whether make_column_dirty should clear the deflated value if an
> inflated one is present, guys?
>
Yes, it should.
_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[email protected]