[Dbix-class] RFC: refresh / discard_changes

Marc Mims marc at questright.com
Sat May 12 03:46:01 GMT 2007


It seems like the question, "How do I refresh a row?" comes up fairly
often on irc and here on the list.  The answer is always
$row->discard_changes.  Refreshing is the same function from a different
perspective.  Rather than throwing my changes away (I haven't made any,
after all), I want to "refresh" my row from storage.

I discussed it briefly with mst on irc.  He dislikes the name "refresh"
and suggests, perhaps, refresh_from_storage.

A doc patch would be sufficient for users to discover discard_changes
when they're looking for refresh, but a alias that expresses the
alternate motivation might make application code more readable.

Thoughts?

	-Marc



Here's the rough draft patch:

Index: lib/DBIx/Class/PK.pm
===================================================================
--- lib/DBIx/Class/PK.pm        (revision 3310)
+++ lib/DBIx/Class/PK.pm        (working copy)
@@ -25,10 +25,11 @@
   return (map { $self->{_column_data}{$_} } $self->primary_columns);
 }
 
-=head2 discard_changes
+=head2 discard_changes, refresh_from_storage
 
 Re-selects the row from the database, losing any changes that had
-been made.
+been made.  C<refresh_from_storage> is an alias for C<discard_changes>;
+they do the same thing, but with different motivations.
 
 =cut
 
@@ -47,6 +48,10 @@
   return $self;
 }
 
+sub refresh_from_storage {
+    shift->discard_changes(@_);
+}
+
 =head2 id
 
 Returns the primary key(s) for a row. Can't be called as





More information about the Dbix-class mailing list