On 31 Jan 2007, at 19:27, Juan Miguel Paredes wrote:
On 1/31/07, Matt S Trout <[EMAIL PROTECTED]> wrote:
On 31 Jan 2007, at 15:23, Juan Miguel Paredes wrote:
> Hi, all!
>
> What if we have to overload ACCEPT_CONTEXT to do something like
this,
> but using DBIC::Schema? What would be the recommended inheritance
> chain? Catalyst::Model::DBIC::Schema acts as a glue between the
actual
> Catalyst model and the Schema classes, so I'm a little confused
about
> where to start... In this particular case, we'd like to access $c
> from model in order to overload subroutines (trigger-like) to
track,
> for example, which user modified what...
add an accessor to the schema, and do $schema->clone then hand that
$c->user
Ok! I understand that ACCEPT_CONTEXT would have to be placed in a
package along the Catalyst::Base inheritance chain, so, a feasible
place would be in MyApp::Model::Schema (based on
Catalyst::Model::DBIC::Schema). I've tried this:
package MyApp::Model::BD;
use strict;
use base 'Catalyst::Model::DBIC::Schema';
__PACKAGE__->mk_accessors( 'context' );
sub ACCEPT_CONTEXT {
my ($self, $c, @args) = @_;
my $new = bless({ %$self }, ref $self);
$new->context($c);
return $new;
}
package MyApp::DataStore; # or whatever this is called
use base qw/DBIx::Class::Schema/;
__PACKAGE__->mk_group_accessors(simple => 'context');
then
my $new = bless ...
$new->schema(bless(...)); # same trick on the schema
$new->schema->context($c);
then in the DBIC code
$self->result_source->schema->context;
make more sense?
--
Matt S Trout, Technical Director, Shadowcat Systems Ltd.
Offering custom development, consultancy and support contracts for
Catalyst,
DBIx::Class and BAST. Contact mst (at) shadowcatsystems.co.uk for
details.
+ Help us build a better perl ORM: http://dbix-
class.shadowcatsystems.co.uk/ +
_______________________________________________
List: Catalyst@lists.rawmode.org
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/
Dev site: http://dev.catalyst.perl.org/