Re: Hatred towards Nested Polymorphic Paths

Sam Smoot
2007-07-10T03:26:32Z

On Jul 8, 9:05 pm, "Michael Koziarski" <mich...@koziarski.com>
wrote:
> > Agree. some_model/1/other_model/2 is a lame way to refer to
join_model/1.
>
> Putting polymorphism aside, what about:
>
> posts/1/comments/34
>
> Which then lets me do
>
> @post = user.posts.find(params[:post_id])
> @comment = @post.comments.find(params[:id])
>
> Does that suck?
>
> --
> Cheers
>
> Koz

Not at all. The alternative implies: If you go around promoting every
2-way association (habtm) to an actual Entity, you probably want to
crack open the PoEAA and brush up a bit on Domain Model. Your object
model can be richer than your database schema. That''s not a bad thing.
Trying to achieve 1:1 parity between the two seems awfully misguided.

More than that, a single authoritative URI for a particular resource
seems arbitrarily limiting. Objects don''t work that way (see:
references). Your database schema doesn''t work that way. What goal is
being achieved through it? Nothing at all pragmatic as far as I can
tell...

In fact, the idea that 2-way associations should be banished from your
Domain Model is entirely unique to Rails as far as my limited
experience suggests, and it certainly doesn''t strike me as a good idea
at all, but more a misrepresentation of "you can" into "you
should". I
might even go so far as to call the unjustified and/or indescriminate
promotion of habtm relationships to has_many => :through as a "code
smell", though I personally can''t stand the phrase. :-)