[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