使用has_many通过

时间:2016-08-09 11:12:38

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord ruby-on-rails-5

我在Rails 5中有一个活动应用,我试图建立一个 RSVP系统

我尝试构建的功能是用户可以转到事件展示页面并点击“&rsffp”。按钮。然后,此用户将显示在“参加此活动的用户”下的活动展示页面中。此外,该活动还会显示在用户的展示页面上 - '此用户正在参加以下活动'。

我对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 %>

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

1 个答案:

答案 0 :(得分:1)

从您的控制器的操作中找到该事件,然后将用户添加到简单的出勤中

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