连接表格和Rails

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

这是否会隐式创建用户/事件的Registration对象?我在我的Registration迁移中添加了一个:goal_amount列,我希望能够在创建Registration时设置:goal_amount。我是否需要显式地创建Registration(即: Registration.create(:user_id => @user.id,:event_id => @event.id,:goal_amount => params [:goal_amount]))才能实现这一点?

这个问题是询问在创建Registration时是否会自动创建相应的对象。作者想要设置:goal_amount。为了实现这个目标,他是否需要显式地创建Registration对象并将值传递给它。
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接