加入表&轨道

时间:2010-07-30 07:10:50

标签: ruby-on-rails activerecord associations

我有活动和用户/团队。

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])才能实现此目的?

1 个答案:

答案 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