通过 has_many 在 Rails 中构建 RSVP 系统

Building an RSVP system in Rails with has_many, through

我在 Rails 5 中有一个活动应用程序,我正在尝试构建一个 RSVP 系统

我要构建的功能是用户可以转到事件显示页面并单击 'rsvp' 按钮。然后,该用户将出现在 'users attending this event' 下的活动显示页面中。此外,该活动还将显示在用户的展示页面上 - 'this user is attending the following events'.

我是 Rails 的新手,我不太确定如何处理 rsvp 按钮功能。到目前为止,这是我的代码:

user.rb

class User < ApplicationRecord
...
  has_many :attendances
  has_many :events, through: :attendances
...
end

event.rb

class Event < ApplicationRecord

  has_many :attendances
  has_many :users, through: :attendances

end

attendance.rb

class Attendance < ApplicationRecord
  belongs_to :user
  belongs_to :event
end

routes.rb

Rails.application.routes.draw do
  root 'events#index'

  resources :events do
    resources :users
  end

  resources :users      
end

这是活动展示页面上的表单,我在其中尝试将用户添加到活动中

show.html.erb - 事件

<%= form_for([@event, @event.users.build] do |f| %>
  <%= f.hidden_field :user_id, value: current_user.id %>
  <%= f.submit "RSVP", class: "btn btn-default" %>
<% end %>

如果您需要任何额外的代码发布,请告诉我。

从控制器的操作中找到事件并将用户添加到出席中,就像

一样简单
event = Event.find_by_id(params[:event_id])
user = User.find_by_id(params[:user_id])
attendance= event.attendances.create(user_id=>user.id) 

当您想了解参加活动的用户时,您可以找到:

users = event.users