Matt S Trout wrote:
On Tue, Jun 09, 2009 at 11:29:53AM +1000, Toby Corkindale wrote:
Matt S Trout wrote:
Basically, you can't add relationships after the fact - if you can't set up
your relationships before the source is registered with the schema then
you'll need to re-register it afterwards.
Slightly annoying side effect of the prototype inheritance style DBIC uses
for schema and sources - I'm aware it's a tad annoying but things break
subtly without it.
Is the correct way to re-register it this?
My::Schema->register_extra_source(
Users => My::Schema->class('Users')->new->result_source_instance
);
(That seems to work at least.. trying to do register_class/source()
again causes an error about it already existing)
ITYM warning, and since you're doing something weird you probably -do-
want to overwrite.
Possibly what we need is a patch to allow a "yes, I meant to do this"
option to squelch the warning ...
I wondered about a patch that added a function to DBIx/Class/Schema.pm
to alter the source, like so?
Although Peter suggested this sort of thing probably wasn't to be
encouraged; I'll put it out there as an option though..
---
lib/DBIx/Class/Schema.pm | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/lib/DBIx/Class/Schema.pm b/lib/DBIx/Class/Schema.pm
index 4b945cc..17b2a8e 100644
--- a/lib/DBIx/Class/Schema.pm
+++ b/lib/DBIx/Class/Schema.pm
@@ -1295,6 +1295,28 @@ sub _unregister_source {
}
}
+=head2 alter_source
+
+=over 4
+
+=item Arguments: $moniker
+
+=back
+
+As L</register_source> but should be used if the result class already
+has a source and you want to replace it with an altered one. (Eg. If
you have
+adjusted its metadata (incl. relationships) after registering it the
first time.)
+
+=cut
+
+sub alter_source {
+ my ($self, $moniker) = @_;
+ my $class = $self->class($moniker);
+ $schema->_unregister_source($moniker);
+ $schema->register_source(
+ $moniker => $class->new->result_source_instance
+ );
+}
=head2 compose_connection (DEPRECATED)
--
1.6.3.2
_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[email protected]