[Dbix-class] Problem created component with per-class config
Alex Povolotsky
tarkhil at over.ru
Sun Jun 19 09:27:51 GMT 2011
Hello!
I'm trying to add a component to DBIx::Class.
I have an object hierarchy with acl checking on each level. The
algorithm is simple (but will be extended) and uniform (and will remain so).
If we have a defined access field, make decision using it.
If no, and we have a parent, ask parent.
If no, and we have no parent, deny.
So, I've written
__PACKAGE__->load_components(qw(+Forum::Schema::Component::ACL));
__PACKAGE__->acl_setup(parent => 'part', user_acl => 'part_acls',
group_acl => 'part_group_acls');
in my Result class.
In Component::ACL:
sub acl_setup {
my $caller = shift;
$params->{$caller} = { @_ };
}
sub check_acls
{
my ($self, $c, $mode) = @_;
my $caller = ref $self->result_source;
die "No config for $caller"
unless defined $config->{$caller};
...
}
The problem is that during setup I'm getting
Forum::Schema::Result::SOMETHING, but in runtime -
Forum::Schema::DB::SOMETHING (my model is called DB), and I did not find
any way to retreive ::Result:: class name from ::DB:: class. Of course,
I can use regexp, but it IS an ugly, buggy and unstable idea.
Have I missed something in docs? How do I make per-class setup in
components?
Alex
More information about the DBIx-Class
mailing list