--- John Siracusa <[EMAIL PROTECTED]> wrote:

>     sub add_columns
>     {
>       my($self) = shift;
> 
>       my @added_columns = $self->SUPER::add_columns(@_);
> 
>       foreach my $column (@added_columns )
>       {
>         $self->alias_column($column->name => '_' . $column->name)
>            unless($self->class->is_public($column));
>       }
> 
>       return @added_columns ;
>     }
> 
> (The return value for add_columns() wasn't documented, but has always
> been the list of columns just added.  It's documented in SVN.)

I've gotten this to work.  One problem is that the return value of
add_columns() is actually the new number of columns in the
'columns_ordered' attribute, not the columns themselves:

   push(@{$self->{'columns_ordered'}}, @columns);

That's the last line of add_columns().  The following handles this:

  sub add_columns {
      my $self = shift;

      $self->SUPER::add_columns(@_);
      foreach my $column ( $self->columns ) {
          $self->alias_column( $column->name => '_' . $column->name )
            unless ( $self->class->is_public_method($column) );
      }
      return scalar $self->columns;
  }

To be fair, I'm going to have to alter even this.  I've realized that
I'm making my public accessors too tied to the database column names. 
What I really need to do is this:

  sub add_columns {
    my $self = shift;

    $self->SUPER::add_columns(@_);
    foreach my $column ( $self->columns ) {
      $self->alias_column( 
        $column->name => $self->class->public_column_name($column) 
      );
    }
    return scalar $self->columns;
  }

Cheers,
Ovid

--

Buy the book -- http://www.oreilly.com/catalog/perlhks/
Perl and CGI -- http://users.easystreet.com/ovid/cgi_course/

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Rose-db-object mailing list
Rose-db-object@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rose-db-object

Reply via email to