Ruby on rails rsvp按钮(用户只能rsvp一次)

Ruby on rails rsvp按钮(用户只能rsvp一次),ruby-on-rails,ruby,Ruby On Rails,Ruby,因此,当前用户可以对同一事件多次进行rsvp。这对我的网站来说显然是有问题的,所以我希望单个用户只能对特定的帖子/事件进行一次rsvp。在他们完成Rsvp后,我希望Rsvp按钮消失。下面是我的代码的外观 show.html.erb id=“注意”> 日期: 名称: 用户id: 地址: 说明: 已注册: | post.rb class Post(obj){obj.address.present?和obj.address_changed?} 反向地理编码:纬度,经度 验证后:反

因此,当前用户可以对同一事件多次进行rsvp。这对我的网站来说显然是有问题的,所以我希望单个用户只能对特定的帖子/事件进行一次rsvp。在他们完成Rsvp后,我希望Rsvp按钮消失。下面是我的代码的外观

show.html.erb
id=“注意”>

日期:

名称:

用户id:

地址:

说明:

已注册:

|
post.rb
class Post(obj){obj.address.present?和obj.address_changed?}
反向地理编码:纬度,经度
验证后:反向地理编码
有很多:RSVP
通过::rsvps拥有多个:用户
验证:名称,状态:true
user.rb
class用户
rsvp.rb
class Rsvp
#rsvp迁移

class Rsvp < ApplicationRecord
  belongs_to :user
  belongs_to :post
end
add_index :rsvps, [:user_id, :post_id], unique: true
class Rsvp

所以我在Stackoverflow中四处搜索了一下,在谷歌上搜索了一下,但我还是不知所措。如果能给我一个能解决这个问题的答案,我将不胜感激。我只想让rsvp按钮显示尚未对特定帖子/事件进行rsvp的用户。

对我来说,最重要的是数据库约束。您希望指示数据库在这些情况下抛出错误

在迁移中

class Rsvp < ApplicationRecord
  belongs_to :user
  belongs_to :post
end
add_index :rsvps, [:user_id, :post_id], unique: true
一个反映这一点的验证,只是为了让rails意识到这一点

validates :user_id, uniqueness: { scope: :post_id }
现在我们确定数据库中只存在一对some_user_id和some_post_id

现在,让我们指示视图在这些情况下不显示按钮

<% unless Rsvp.exists?(post: @post, user: @post.user) %>
  <div class="rsvp">
    <%= button_to "Rsvp now", rsvps_post_path(@post), class: "btn btn-primary" %>
  </div>
<% end %>


我将移动操作中存在的查询,并在此处仅使用布尔值,这只是演示。

对我来说最重要的是数据库约束。您希望指示数据库在这些情况下抛出错误

在迁移中

class Rsvp < ApplicationRecord
  belongs_to :user
  belongs_to :post
end
add_index :rsvps, [:user_id, :post_id], unique: true
一个反映这一点的验证,只是为了让rails意识到这一点

validates :user_id, uniqueness: { scope: :post_id }
现在我们确定数据库中只存在一对some_user_id和some_post_id

现在,让我们指示视图在这些情况下不显示按钮

<% unless Rsvp.exists?(post: @post, user: @post.user) %>
  <div class="rsvp">
    <%= button_to "Rsvp now", rsvps_post_path(@post), class: "btn btn-primary" %>
  </div>
<% end %>

我将移动操作中的现有查询,并在这里使用布尔值,这只是演示