【问题标题】:Joins Tables & Rails连接表和导轨
【发布时间】:2010-07-30 07:10:50
【问题描述】:

我有活动和用户/团队。

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 =&gt; @user.id, :event_id =&gt; @event.id, :goal_amount =&gt; params[:goal_amount]) 才能实现这一点?

【问题讨论】:

    标签: ruby-on-rails activerecord associations


    【解决方案1】:

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

    让它看起来更酷的一个解决方案是在事件对象中创建一个add_user 方法。

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

    那你只需要打电话

    @event.add_user @user, 100
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-16
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      相关资源
      最近更新 更多