Ruby on rails rsvp按钮(用户只能rsvp一次)
因此,当前用户可以对同一事件多次进行rsvp。这对我的网站来说显然是有问题的,所以我希望单个用户只能对特定的帖子/事件进行一次rsvp。在他们完成Rsvp后,我希望Rsvp按钮消失。下面是我的代码的外观 show.html.erbRuby 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?} 反向地理编码:纬度,经度 验证后:反
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 %>
我将移动操作中的现有查询,并在这里使用布尔值,这只是演示