I tried doing as you suggested..it all works fine except when I do this:

my $new_product = Product->new(product_id => 100); 

above line dies with :
 died: Can't locate object method "product_id" via package "t::Product" at 
/usr/lib/perl5/site_perl/5.8.6/Rose/DB/Object.pm line 1464

some other flag needs to be set to inform Rose::DB classes to use 
'get_product_id' instead of 'product_id' ?

The test case files are attached.

-----------------------------
A better option is to make your own Metadata subclass and then override the
make_column_methods() method and change the auto_method_types() of all the
columns before calling through to the base class implementation:

    package My::DB::Metadata;
    
    use base 'Rose::DB::Object::Metadata';
    
    sub make_column_methods
    {
      my($self) = shift;
    
      foreach my $column ($self->columns)
      {
        $column->auto_method_types(qw(get set));
      }
    
      $self->SUPER::make_column_methods(@_);
    }

Then configure your common object base class to use your custom metadata
class:

    package My::DB::Object;

    use base 'Rose::DB::Object';

    use My::DB::Metadata;

    sub meta_class { 'My::DB::Metadata' }
    ...

and you should be all set.





Attachment: get_set_methods.tar
Description: Binary data

-------------------------------------------------------------------------
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