I have a series of DBIx::Class classes that have been auto-generated by the Schema Loader.

I also want to maintain an audit trail of changes to any database table entries, so I've started overriding the update() method on each. But after the first couple, I've realised that the overrides will actually be completely identical.

I'd obviously rather not duplicate 35 lines of identical code in all 20 classes if I can get away with it. What is the best way to achieve this?

--------------------- | DBIx::Class::Core | | update() | --------------------- / | | \ / | | \ ------------ ------------ ------------ ------------ | Table A | | Table B | | Table C | | Table D | ....... | update() | | update() | | update() | | update() | ------------ ------------ ------------ ------------

The first option that I considered was multiple inheritance, but the overriding method needs to call its parent method in the DBIx::Class::Core:

sub update { my __PACKAGE__ $self = shift; # Pre-processing : : : # Call the parent method $self->next::method(\%new_values); # If successful, record audit trail : : : }

In reply to Overriding method in multiple DBIx::Class child classes by MattLG

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.