gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:17:04 25 4
gpt4 key购买 nike

我是 Rails 的新手,一直无法为此找到一些东西。

在我的应用中,我有产品、评论和用户。

评论属于用户和产品,而用户和产品“有_许多”评论。

但是,我想限制用户为每个产品输入多个评论(每个产品都是独一无二的)。因此,如果用户为产品创建评论并尝试为同一产品撰写另一条评论,他们会被告知他们不允许但可以编辑他们现有的评论。

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

最佳答案

您可以通过模型验证轻松地做到这一点,索引也会有所帮助。但警告,如果您在没有随附 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定期复习这些东西的语法。你也应该!

关于ruby-on-rails - Rails - 如何限制用户在每个关联中输入多个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16919647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com