Re: [CDBI] Worknig on Class::DBI::Relationship::IsA
[prev]
[thread]
[next]
[Date index for 2006/02/23]
Hi Peter!
Glad to see you're working on IsA :)
Before this trail goes cold, I'll quickly give you my thoughts.
> 1) How to Handle CDBI Frozen vs Not Frozen versions. I am thinking
> that *EVEN* versions numbers on IsA will be compatible with the CDBI
> Frozen and Odd numbers with later releases. ? Is this a good or bad
> idea? Any better ideas?
I would prefer not having to think about which version I should install. On
top of that, I would _love_ IsA to play nice with Class::DBI::Sweet.
An even/odd scheme doesn't sound practical to me, not least because the CPAN
shell will generally give you the latest version.
> 2) One to One vs Many to One. -- from my DB knowledge I understand
> IsA rels to be of either 1:1 or M:1 relationship types. I want to
> make IsA cascade delete if it is a 1:1. I'm thinking of doing that by
> passing an extra arg to the isa call:
>
> Music::Artist->is_a(person => 'Music::Person', {one_to_one => 1} );
> Music::Person->is_a(species => 'HomoSapien', {many_to_one => 1} ); # fancy has_a
>
> Any objections to this interface? Better ideas?
Can't tell. I only use 1-1, pretty much like might_have. I'd probably like it
to default to 1-1.
> 3) Are the docs still wrong on usage ? I find that I have to declare
> which column to "import" from the IsA class in my classes column
> lists. This may be a good thing as you have some control over methods
> created for you. The docs say :
>
> Music::Artist->columns(All => qw/artistid alias/);
> Music::Artist->is_a(person => 'Music::Person'); # Music::Artist
> inherits Person accessors
This definitely works for me exactly like it says here, using (the older) 0.05.
> But my experience is this:
>
> Music::Artist->columns(All => qw/artistid alias first_name last_name dob/);
>
> Music::Artist->is_a(person => 'Music::Person'); # Music::Artist only
> inherits Person first_name,
> #
> last_name, and dob
No, I have not had this experience at all. Mind you, I've never used the 0.05
that's on CPAN at the moment, because it had several issues. The version
before that (also 0.05) works pretty well though, and doesn't exhibit what you
describe here.
> An official test will take care of what is and is not. I would like to know --
> What is desired? Personally I am leaning toward being abel to declare
> which are inherited. It could be an arg that defaults to all.
I think having control is nice, see the way might_have works. I would be fine
with having them all imported by default.
> Also, maybe the issue is that the accessor is created but it does not
> get put in the "All" colums list and it is causing me problems.
> Music::Artist->is_a(person => 'Music::Person', { inherit =>
> [first_name, ...] });
>
> Thoughts?
That looks good. Personally, I don't see a problem with those accessors not
being in All. They're not columns of this object, so the accessors should just
proxy on to the parent object, in my view.
One thing that was lacking from the 0.05 I'm using was that has_many relations
of the parent class were not (properly?) imported into the child. Has_a
relations on the other hand _are_ imported. I would enjoy having the
has_many's as well :)
The second thing I'd like to see is the removal of the hard-coded reference to
'Class::DBI::search', so that IsA can be made to work with CDBI::Sweet. See my
recent post to this list for more details.
Other than these two items, I've been fairly satisfied with IsA sofar: it
works for what I need from it.
I'm willing to help in testing your new versions. Just let me know what I can do.
Rhesa
_______________________________________________
ClassDBI mailing list
ClassDBI@xxxxx.xxxxxxxxxxxxxxxx.xxx
http://lists.digitalcraftsmen.net/mailman/listinfo/classdbi
|
|
Re: [CDBI] Worknig on Class::DBI::Relationship::IsA
Rhesa Rozendaal 23:13 on 23 Feb 2006
|