[Dbix-class] Overriding Standard Methods

Dave Cross dave at dave.org.uk
Wed Dec 3 15:19:35 GMT 2008


I think I'm missing something obvious here. Feel free to point out my
stupidity.

I have a set of DBIC classes that have been generated by Schema::Loader.
I want to overload the "delete" method so that instead of actually
deleting the row the deleted flag gets set to true[1].

I can add a method to the class like this:

sub rm {
  my $self = shift;

  $self->deleted(1);
  $self->update;
}

and call "rm" instead of "delete". Then everything works. But I don't
want to call the method "rm", I want to call it "delete". If I call it
delete, then my method doesn't get called. It goes into
DBIx::Class::Relationship::CascadeActions::delete and that passes
control to DBIx::Class::Row::delete - completely missing my method.

What am I missing?

Cheers,

Dave...

[1] Yes, this should be a trigger. But triggers are banned from this
database.



More information about the DBIx-Class mailing list