Clifford,

Thanks for the insight. I'm still a bit unclear on how to model things
though. Are you saying that I need something like this?

Person
has n, :photos
has n, :albums


Album
has n, :photos, :through => Resource
has n, :people, :through => Resource

Photo
belongs_to :person, :required => true
has n, :albums, :through => Resource

This gives me an album-person index. It also creates a direct linkage
between person and album. Does this seem more plausible to you? Would
you suggest further improvements?

Thanks.


On Mar 18, 5:37 pm, Clifford Heath <[email protected]> wrote:
> On 19/03/2012, at 6:55 AM, Neil Chaudhuri wrote:
>
> > Person
> > has n, :photos
>
> > Album
> > has n, :photos, :through => Resource
> > has n, :people, :through => :photos, :via => :person
>
> > Photo
> > belongs_to :person, :required => true
> > has n, :albums, :through => Resource
>
> Neil,
>
> Your Resource table has a photo_id and an album_id.
> You will need two indices to traverse this efficiently in both directions,
> one with the pair (photo_id, album_id) and one the other way around.
> But that doesn't solve your basic problem. You have
>
> Person -< Photo -< Resource >- Album
>
> You're trying to make a :through relationship that goes through 3 links
> from Album to Person. Not sue, but I don't think this is going to work.
>
> > Given an album, I would like all the photos in that album grouped by
> > the person they belong to.
>
> You have no index that contains a (album, person) pair, so that grouping
> is going to have to occur after retrieval.
>
> Clifford Heath.

-- 
You received this message because you are subscribed to the Google Groups 
"DataMapper" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/datamapper?hl=en.

Reply via email to