我有活动和用户/团队。
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
这会隐式为用户/事件创建Registration对象吗?我在注册迁移中添加了:goal_amount列,我希望能够在创建注册时设置:goal_amount。我是否需要明确创建注册(即:Registration.create(:user_id => @user.id, :event_id => @event.id, :goal_amount => params[:goal_amount])
才能实现此目的?
答案 0 :(得分: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