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/

Reply via email to