我对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
答案 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?"} %>