[Jifty-commit] r3972 - in jifty/branches/virtual-models: .
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Fri Aug 24 14:28:39 EDT 2007
Author: sterling
Date: Fri Aug 24 14:28:38 2007
New Revision: 3972
Modified:
jifty/branches/virtual-models/ (props changed)
jifty/branches/virtual-models/lib/Jifty/Model/ModelClassColumn.pm
Log:
r8951 at riddle: andrew | 2007-08-24 13:14:22 -0500
Adding support for calling register_triggers_for_column whenever a new database-backed column is created and dropping triggers on delete.
Modified: jifty/branches/virtual-models/lib/Jifty/Model/ModelClassColumn.pm
==============================================================================
--- jifty/branches/virtual-models/lib/Jifty/Model/ModelClassColumn.pm (original)
+++ jifty/branches/virtual-models/lib/Jifty/Model/ModelClassColumn.pm Fri Aug 24 14:28:38 2007
@@ -196,11 +196,37 @@
$self->model_class->add_column($self);
unless ($self->virtual) {
my $ret = Jifty->handle->simple_query( $self->model_class->qualified_class->add_column_sql( $self->name ) );
+ for my $mixin ($self->RECORD_MIXINS) {
+ if (my $triggers_for_column
+ = $self->can('register_triggers_for_column')) {
+ $triggers_for_column->($self, $self->name);
+ }
+ }
$ret || $self->log->fatal( "error updating a table: " . $ret->error_message);
}
return 1;
}
+=head2 after_delete
+
+Cleans up triggers for a column. This way if a column of a given name is deleted and another column of the same name is created, the old triggers won't be overlaid on the new ones.
+
+=cut
+
+sub after_delete {
+ my $self = shift;
+ my $ret = shift;
+
+ if ($$ret) {
+ my $name = $self->name;
+
+ delete $self->{__triggers}{'before_set_'.$name};
+ delete $self->{__triggers}{'after_set_'.$name};
+ }
+
+ return 1;
+}
+
=head2 table
Database-backed models are stored in the table C<_jifty_models>.
More information about the Jifty-commit
mailing list