The generally accepted way of doig this is to start thinking of a
membership as a first_class entity.

When you 'sign up', for example, you are creating a membership.

Membership.create :user_id => params[:user_id], :group_id =>
params[:group_id], :joined_on => Date.today, :active => true

I have found that there is seldom a reason to take an extra DB hit to
grab one or both related objects.  In fact, I'd argue that

@user = User.find_by_id(1)
@group = Group.find_by_id(1)
@group.members << @user

is a waste of objects and a waste of time. However, if you have both
objects already, simply assign them.

Membership.create :user => @user, :group => @group, :joined_on =>
Date.today, :active => true

Does that make sense?

On Tue, Apr 14, 2009 at 12:24 PM, Bart Zonneveld
<[email protected]> wrote:
>
> Hey list,
>
> I was wondering on the definitive approach of setting attributes on
> the join model of a has_many :through relation. After some googling, I
> didn't find a "shortcut" approach to it, so I started tinkering, and
> thinking.
> Imagine users, groups, and memberships. Would something like this be a
> good approach?
>
> group.members << :user => @user, :role => Role.admin
>
> If so, I could whip up a patch. If not, please enlighten me as to what
> would be a good way to assign those properties.
>
> cheers,
> bartz
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" 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-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to