Matt S Trout wrote:
> On Mon, May 21, 2007 at 10:17:21AM -0400, Christopher H. Laco wrote:
>> Msts Vox post about monkey patching reminded me this morning that I
>> needed to put this somewhere:
>>
>>> *DBIx::Class::Row::get_inflated_columns =3D sub {
>>> my $self =3D shift;
>>> =20
>>> return map {$_ =3D> $self->$_} $self->columns;
>>> };
>>
>> I stuffed it into my DBIC provider just to try it on for size.
>>
>> Now, I can put this into a base class and have all my schema classes
>> inherit from that. Sure, it's so easy, a cave man can do it. But I'm not
>> the first, nor will I be the last to write these three lines of code and
>> inherit a base classes for source classes just to do this very thing.
>>
>> Can we just put this in DBIC already?
>
> Sure, but it has to obey ->{accessor} (and you'll need to patch inflate_column
> to while you're there) and there'll need to be tests.
return map {$_ => $self->$_} $self->columns;
Why do I have to patch inflate_column or care if I'm using the accessor?
>
> Oh, and how do you propose to handle people wanting rels as well?
I don't, just like get_columns doesn't.
>
> Or non-column attributes? (c.f. Oleg's horrible hack because he wanted to
> use get_columns on non-column things)
>
I don't, just like get_columns doesn't.
I'm proposing that get_inflated_columns is no smarter than get_columns
or than I get the objects instead of their values...
> sub get_columns {
> my $self = shift;
> return %{$self->{_column_data}};
> }
sub get_inflated_columns {
my$self = shift;
return map {$_ => $self->$_} $self->columns;
};
If get_columns/columns doesn't give a crap about non column attributes
and rels, then neither should this.
-=Chris
signature.asc
Description: OpenPGP digital signature
_______________________________________________ List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class Wiki: http://dbix-class.shadowcatsystems.co.uk/ IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/ Searchable Archive: http://www.mail-archive.com/[email protected]/
