[Catalyst] Possibly OT: CDBI inheritance broken
    Phil Mitchell 
    phil.mitchell at pobox.com
       
    Thu Oct  6 23:52:56 CEST 2005
    
    
  
Got no help on this from CDBI list, thought people here might have
some ideas. This is for a catalyst app that uses CDBI but not Sweet or
Loader... Basically, I added a trigger to a subclass of my Page class,
and suddenly the subclass stopped inheriting the things it should
inherit (like other triggers, relationships...)
CDBI wiki does mention a related issue, but the fix given has not
helped: http://wiki.class-dbi.com/index.cgi?InheritedRelationships
Relevant extracts from my classes:
Subclass of Page cdbi setup:
sub essential_columns {
 my @essential = Reef::M::DBI::Page->_essential;
 push @essential, qw/username password person_name email/;
 push @essential, $GEO_VALIDATION->core_location_fields();
 return @essential
}
__PACKAGE__->columns(Essential => __PACKAGE__->essential_columns);
__PACKAGE__->add_trigger(after_create  => \&_after_create);
Here's Page:
__PACKAGE__->table('page');
__PACKAGE__->columns(Primary => qw/id /);
__PACKAGE__->columns(Essential => qw/page_type
                                    created
                                    edit_date
                                    edit_by
                                    user_owner
                                    club_owner
                                    permissions
                                    locked_since
                                    locked_by
                                    title
                                    body /);
__PACKAGE__->columns(Others => qw/shelf /);
__PACKAGE__->has_a(shelf        => 'Reef::M::DBI::Shelf');
__PACKAGE__->has_a(locked_by    => 'Reef::M::DBI::Page::User');
__PACKAGE__->has_a(edit_by      => 'Reef::M::DBI::Page::User');
__PACKAGE__->has_a(user_owner   => 'Reef::M::DBI::Page::User');
__PACKAGE__->has_a(club_owner   => 'Reef::M::DBI::Page::Club');
__PACKAGE__->has_a(created => 'DateTime',
                  inflate => sub {
DateTime::Format::ISO8601->parse_datetime(shift) },
                  deflate => sub { shift->iso8601() });
__PACKAGE__->has_a(edit_date => 'DateTime',
                  inflate => sub {
DateTime::Format::ISO8601->parse_datetime(shift) },
                  deflate => sub { shift->iso8601() });
__PACKAGE__->has_a(locked_since => 'DateTime',
                  inflate => sub {
DateTime::Format::ISO8601->parse_datetime(shift) },
                  deflate => sub { shift->iso8601() });
__PACKAGE__->has_many(tags => 'Reef::M::DBI::Tag');
__PACKAGE__->add_trigger(before_create  => \&_before_create);
__PACKAGE__->add_trigger(before_update  => \&_before_update);
--
==========================
2People Blog: http://2-people.blogspot.com/
2People site: http://www.2people.org
    
    
More information about the Catalyst
mailing list