所以我想要一个选项,让用户为一个特定的事件制定一个rsvp。该事件还应该有一个已经为事件回复的人的列表。我已经尝试了无数个小时来解决这个问题,并阅读了一些我认为相关的教程,但没有成功。我不知道我需要在这篇文章中展示多少代码,所以我只想链接我的github。platform
我真的很感激你们的帮助,我也不要求你们中的任何人为我完成代码,通过看看你们的解决方案,他们在rails上比我更有经验,这对我学习它的概念是非常有帮助的。
发布于 2018-04-12 05:34:38
在现实生活中,RSVP本质上是在人与事件之间建立联系的东西。类似地,在您的代码中,这就是如何将这两个模型连接在一起的方法。
因此,要做到这一点,RSVP应该是用户和事件之间的连接表。从您的代码来看,您似乎没有Event模型,所以对于您的情况,Event与Post是一样的
所以你会这样做:
Rsvp.rb
class Rsvp < ApplicationRecord
belongs_to :user
belongs_to :post
end然后创建协会:
User.rb
class User < ApplicationRecord
has_many :rsvps
has_many :posts, through: :rsvps
endPost.rb
class Post < ApplicationRecord
has_many :rsvps
has_many :users, through: :rsvps
end然后创建相关迁移:
class CreateRsvps < ActiveRecord::Migration[5.1]
def change
create_table :rsvps do |t|
t.belongs_to :user
t.belongs_to :post
end
end
end现在,您可以通过这样做来回复事件:
Rsvp.create(user_id: user_id, post_id: post_id)如果您想要一个用户将要发生的所有事件的列表,您可以这样做:
user.posts或者是所有对某一事件都有回复的人的名单:
post.usershttps://stackoverflow.com/questions/49788186
复制相似问题