加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails – 如何限制用户为每个关联输入多个记录

发布时间:2020-12-17 03:47:51 所属栏目:百科 来源:网络整理
导读:我是rails的新手,但却找不到适合自己的东西. 在我的应用程序中,我有产品,评论和用户. 评论belongs_to用户产品虽然用户和产品“has_many”评论. 但是,我想限制用户为每个产品输入多个评论(每个产品都是唯一的).因此,如果用户为产品创建评论并尝试为同一产品撰
我是rails的新手,但却找不到适合自己的东西.

在我的应用程序中,我有产品,评论和&用户.

评论belongs_to用户&产品虽然用户和产品“has_many”评论.

但是,我想限制用户为每个产品输入多个评论(每个产品都是唯一的).因此,如果用户为产品创建评论并尝试为同一产品撰写另一篇评论,则会告诉他们不允许这样做,但可以编辑他们现有的评论.

我的问题是:我应该在控制器级别执行此操作,还是可以通过验证(这似乎是一个更简单的解决方案)来执行此操作?只是不知道如何处理它.

解决方法

您可以使用模型验证轻松完成此操作,索引也可以提供帮助.但是请注意,如果您在没有附带ActiveRecord验证的情况下执行唯一索引,则保存将无提示失败并导致可用性/调试问题.

这应该这样做:

class Review < ActiveRecord::Base
  validates :user_id,:uniqueness => { :scope => :product_id,:message => "Users may only write one review per product." }
end

如果要添加索引,请在迁移中尝试:

class AddUniquenessConstraintToReviews < ActiveRecord::Migration
  add_index  :review,[:user_id,:product_id],:name => "udx_reviews_on_user_and_product",:unique => true
end

编辑:作为一个全职的Rails开发人员,我仍然会经常参考the ActiveRecord docs以了解这些事情的语法.你也应该!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读