Walter,

Yes, Role sounds promising. If it's not too much to ask, could you
please paste some of what you ended up with?

Lille

On Feb 14, 10:04 am, Walter Lee Davis <[email protected]> wrote:
> On Feb 14, 2011, at 9:53 AM, Lille wrote:
>
>
>
> > Jim,
>
> > Thanks, but your proposed RecordOwner would have no behavior distinct
> > from User and would not describe the relationship from the Project
> > model's perspective. My User shouldn't care about the kind of relation
> > it has to Project, rather the reverse.
>
> > My pseudocode is about as specific as I know how to get.
>
> > To recap in its most distilled form, my problem is what relationships
> > to include in two models, User and Project, where a User may be
> > associated with Project in any of three ways -- User,
> > 'primary_record_owner', or 'record_owner, such that the following
> > expressions are possible:
>
> > 1) @user.projects # returns all projects associated with a User
> > instance
> > 2) @project.primary_record_owner # returns a User instance
> > 3) @project.record_owners # returns a collection of User instances
> > 4) @project.users # returns a collection of User instances
>
> > I think I see how to accomplish 2-4, using HABTM, but I don't see how
> > to accomplish 1) at the same time.
>
> Have you thought about a polymorphic join model between the two, like  
> maybe a Role? That's how I ended up structuring a recent project.
>
> Walter
>
>
>
> > Thanks,
>
> > Lille
>
> > On Feb 13, 8:41 pm, Jim Ruther Nill <[email protected]> wrote:
> >> I'm thinking about 4 models
>
> >>    - User
> >>    - Project
> >>    - RecordOwner
> >>    - UserProject -> this is the join table for user and project
>
> >> You won't need RecordOwner if record_owners is a subset of the users
> >> association.
> >> Give us an example so we can help out with the options you want.
>
> >> On Mon, Feb 14, 2011 at 8:17 AM, Lille <[email protected]>  
> >> wrote:
> >>> Hi,
>
> >>> I want to specify relationships between two classes like that
> >>> expressed in the following pseudocode:
>
> >>> class User < ActiveRecord::Base
> >>>   has_many :projects
> >>> end
>
> >>> class Project < ActiveRecord::Base
>
> >>> has_one
> >>>  :primary_record_owner, :<pseudo_option_for_referring_to>=>"User"
> >>>   has_many :record_owners, :<pseudo_option_for_referring_to>=>"User"
> >>>   has_many :users # this refers to User, too
> >>> end
>
> >>> From the above I seek the following kind of results:
>
> >>> @user.projects # returns all projects associated with the user from
> >>> any of the three User associations in Project
> >>> @project.primary_record_owner # returns the User instance
> >>> @project.record_owners # returns the collection of User instances
> >>> @project.users # returns User instances, not necessarily overlapping
> >>> with the other associations
>
> >>> The intent I mean to express is that a Project can have any of three
> >>> levels of relationship with a User, while a User has only one  
> >>> level of
> >>> association with a Project.
>
> >>> I was thinking HABTM, but I don't see how to get my desired
> >>> '[email protected]' result from that.
>
> >>> Any helpful comment would be greatly appreciated.
>
> >>> Thanks,
>
> >>> Lille
>
> >>> --
> >>> You received this message because you are subscribed to the Google  
> >>> Groups
> >>> "Ruby on Rails: Talk" 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/rubyonrails-talk?hl=en.
>
> >> --
> >> -------------------------------------------------------------
> >> visit my blog athttp://jimlabs.heroku.com
>
> > --
> > You received this message because you are subscribed to the Google  
> > Groups "Ruby on Rails: Talk" group.
> > To post to this group, send email to rubyonrails-
> > [email protected].
> > To unsubscribe from this group, send email to 
> > [email protected]
> > .
> > For more options, visit this group 
> > athttp://groups.google.com/group/rubyonrails-talk?hl=en
> > .
>
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" 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/rubyonrails-talk?hl=en.

Reply via email to