[Jifty-commit] r5407 - in Net-Jifty: . lib/Net/Jifty

Jifty commits jifty-commit at lists.jifty.org
Wed May 7 21:34:59 EDT 2008


Author: sartak
Date: Wed May  7 21:34:59 2008
New Revision: 5407

Modified:
   Net-Jifty/   (props changed)
   Net-Jifty/lib/Net/Jifty.pm
   Net-Jifty/lib/Net/Jifty/Record.pm

Log:
 r55339 at onn:  sartak | 2008-05-07 21:34:56 -0400
 Triggers don't work because they run on ->new, so instead add "after" method modifiers


Modified: Net-Jifty/lib/Net/Jifty.pm
==============================================================================
--- Net-Jifty/lib/Net/Jifty.pm	(original)
+++ Net-Jifty/lib/Net/Jifty.pm	Wed May  7 21:34:59 2008
@@ -973,6 +973,20 @@
         attributes   => \@attributes,
     );
 
+    for my $attribute (@attributes) {
+        next unless $attribute->has_writer;
+
+        my $name   = $attribute->name;
+        my $reader = $attribute->get_read_method;
+        my $writer = $attribute->get_write_method;
+
+        $meta->add_after_method($writer => sub {
+            my $self = shift;
+            return if @_ == 0; # read
+            $self->update($name, $self->$reader);
+        });
+    }
+
     $meta->add_attribute('+_model_class',
         default => $last,
     );
@@ -996,14 +1010,6 @@
         $opts{isa} = $self->_moosify_type($spec->{type});
         delete $opts{isa} if !defined($opts{isa});
 
-        # on set, update the value of this record's column on the server
-        if ($spec->{writable}) {
-            $opts{trigger} = sub {
-                my ($self, $new_value, $attribute) = @_;
-                $self->update($attribute->name => $new_value);
-            };
-        }
-
         push @attributes, Moose::Meta::Attribute->new($column, %opts);
     }
 

Modified: Net-Jifty/lib/Net/Jifty/Record.pm
==============================================================================
--- Net-Jifty/lib/Net/Jifty/Record.pm	(original)
+++ Net-Jifty/lib/Net/Jifty/Record.pm	Wed May  7 21:34:59 2008
@@ -86,10 +86,12 @@
         delete $hash->{$_} if !defined($hash->{$_});
     }
 
-    return $class->new(
+    my $record = $class->new(
         _interface => $interface,
         %$hash,
     );
+
+    return $record;
 }
 
 sub _default_model_class { shift->meta->get_attribute('_model_class')->default }


More information about the Jifty-commit mailing list