On 4/2/07, Ovid <[EMAIL PROTECTED]> wrote:
> I didn't see it in the docs, but is there anything akin to 'mutator'
> metadata which would let me do something like the following?
>
> foreach my $method ( $class->mutators ) {
> $self->make_override( $method );
> }
>
> The 'mutators' would return all 'set_*' type methods along with the
> 'update', 'delete', etc. methods.
You can get a list of column mutator methods:
http://search.cpan.org/dist/Rose-DB-Object/lib/Rose/DB/Object/Metadata.pm#column_mutator_method_names
You will have to grep { defined } because there'll be undef items for
columns with no mutator methods. It's just a convenience method
anyway. Given:
$meta = MyClass->meta;
Here are a few increasingly verbose, equivalent Ways To Do It:
@mutators = grep { defined } $meta->column_mutator_method_names;
@mutators =
grep { defined } map { $_->mutator_method_name } $meta->columns;
@mutators =
grep { defined }
map { $_->method_name('set') || $_->method_name('get_set') }
$meta->columns;
Note that the purpose of these calls is slightly different than your
(apparent) purpose. $column->mutator_method_name returns "a method"
that can be used to mutate the column. If a column has both a "set"
and a "get_set" method, then there are two such methods. For an
exhaustive list of "all methods" that can be used to mutate the
column, modify the last example to be:
@mutators =
grep { defined }
map { $_->method_name('set'), $_->method_name('get_set') }
$meta->columns;
Anyway, column mutator methods just change the value of an attribute
of an in-memory object. Nothing gets written to the database until
you save(), insert(), update(), or delete(). (That's the full list of
object methods that change the database.)
-John
-------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/rose-db-object