添加到连接表

时间:2014-01-19 12:54:03

标签: ruby-on-rails database join

我对Rails很陌生并且正在努力学习。我有一个User表,一个Event表和一个UserEvent连接表。当用户创建事件时,它们将添加到连接表中。但是,我希望除了活动创建者之外的其他用户能够点击"加入活动"按钮并将他或她自己添加到UserEvent连接表,以便我可以告诉有多少人参加活动。我该如何设置呢?我需要创建一个UserEvent控制器吗?除了知道一旦功能允许使用counter_cache,我对如何处理这个问题感到非常困惑。

资源如下:

  resources :users do
    resources :activities
  end
  resources :activities, only: [:index, :show]

  resources :users do
    resources :events
  end

1 个答案:

答案 0 :(得分:1)

您可以使用<< ActiveRecord方法(I found out about here)添加到关联

以下是您可以做的事情:

#config/routes.rb
resources :events do 
    member do
       post :join
    end
end

#app/controllers/events_controller.rb
def show
    @event = Event.find(params[:event_id])
end

def join
   @event = Event.find(params[:event_id])
   @event.users << params[:user_id] #might need more than just params[:user_id]

   redirect_to root_path
end

#app/models/event.rb
Class Event < ActiveRecord::Base
    has_many :user_events
    has_many :users, through: :user_events
end

#app/views/events/show.html.erb
#will need to pass user_id somehow (use form)
<%= link_to "Join", event_join_path(@event), method: :post, data: {confirm: "Really Join?"} %>