[Dbix-class] How to find updated fields

RA Jones ra.jones at dpw.clara.co.uk
Fri Mar 23 14:46:48 GMT 2007


Guillermo Roditi wrote:
> That's the code I would recommend using for a DBIx::Class component,
> which you would have to build, then load. this is a lot simpler than
> it seems. see DBIx::Class::DigestColumns on the 'pan for an example of
> how to build a DBIC component. 
This is a module you assisted in development? Are you suggesting I have 
to write my own module to be able to use the get_dirty_columns method?

> I can't really go through this exercise with you, but I assure you
> it's not ThatHard. it just takes some diving in.
I'm quite prepared to 'dive in' if that is what is necessary. But I feel 
sure it *will* be ThatHard!

> On 3/23/07, RA Jones <ra.jones at dpw.clara.co.uk> wrote:
>> Guillermo Roditi wrote:
>> > I think you could possibly implement this as a component that wraps
>> > update, delete, or insert and the use get_dirty_columns et al.
>> >
>> > eg
>> >
>> > sub update{
>> >    my ( $self, $upd, @rest ) = @_;
>> >    my %cols = $obj->get_dirty_columns;
>> >    %cols = (%cols, %$upd) if( ref $upd );
>> >    warn( "Updated: ". join(", ", keys %cols)  );
>> >    $self->next::method($upd, @rest);
>> > }
>>
>> Well I cannot get this to work. I'm using catalyst and formbuilder, and
>> doing the update like:
>>
>> $form->update($fields);
>>
>> That works OK, but if I try to capture the result of the action:
>>
>> my $r = $form->update($fields);
>>
>> and dump $r to file, get_dirty_columns does not exist, the closest is
>> _dirty_columns which is an undefined hashref:
>>
>> $VAR1 = bless( {
>>    'related_resultsets' => {},
>>    '_orig_ident' => undef,
>>    '_dirty_columns' => {},
>>    etc,
>>
>> Am I missing something obvious here?
>>
>> > On 3/22/07, RA Jones <ra.jones at dpw.clara.co.uk> wrote:
>> >> Rob Kinyon wrote:
>> >> > On 3/22/07, RA Jones <ra.jones at dpw.clara.co.uk> wrote:
>> >> >> In my applications I frequently record in a log file which fields
>> >> >> were updated by which users. Is there an easy way in DBIC to find
>> >> >> out which fields got updated during an update() or
>> >> >> update_or_insert() action? Thanks.
>> >> >
>> >> > Look for the get_dirty_columns() method on the Row object.
>> >> Thanks, I had just scanned the DBIC::Row manual, and managed to miss
>> >> that one - is_changed() looked promising, but it appears to be only 
>> for
>> >> uncommitted changes.
>> >> --
>> -- 
>> Richard Jones
>> Leeds, UK
>> ra.jones(at)dpw.clara.co.uk
>>
>> _______________________________________________
>> List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
>> Wiki: http://dbix-class.shadowcatsystems.co.uk/
>> IRC: irc.perl.org#dbix-class
>> SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
>> Searchable Archive: 
>> http://www.mail-archive.com/dbix-class@lists.rawmode.org/
>>
> 
> _______________________________________________
> List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
> Wiki: http://dbix-class.shadowcatsystems.co.uk/
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
> Searchable Archive: 
> http://www.mail-archive.com/dbix-class@lists.rawmode.org/
> 
> 
> 


-- 
Richard Jones
Leeds, UK
mailto:ra.jones at dpw.clara.co.uk



More information about the Dbix-class mailing list