2010-07-30 70 views
3

我有活动和用户/团队。加入表格和导轨

class Event 
    has_many :users, :through => :registrations 
end 
class User 
    has_many :events, :through => :registrations 
end 
class Registration 
    belongs_to :users 
    belongs_to :events 
end 

当我注册一个用户,我喜欢他们这样连接到事件:

@event.users << @user 

这是否暗示为用户创建/事件登记对象?我在注册迁移中添加了一个:goal_amount列,并且我希望能够在创建注册时设置:goal_amount。我需要显式地创建一个注册(即:Registration.create(:user_id => @user.id, :event_id => @event.id, :goal_amount => params[:goal_amount])要做到这一点

回答

2

是,将用户添加到事件自动创建关系对象
是的,如果你想添加您必须手动创建的关系?在中间表中的参数。

一个解决方案,使它看起来冷却器是创建事件对象add_user方法。

def add_user user, goal_amount 
    Registration.create({ 
     :user => user, 
     :event => self, 
     :goal_amount => goal_amount) 
    }) 
end 

然后你只需要调用

@event.add_user @user, 100 
+0

谢谢!这工作完美:) – 2010-07-30 16:06:10

+0

标记我的答案接受然后;) – 2010-08-02 09:40:38