Validation 特定验证

Validation 特定验证,validation,associations,unique,Validation,Associations,Unique,我的项目中有用户模型和产品模型。用户有一些产品。我希望用户产品仅对此用户具有唯一的标题 例如,user1有一个名为product的产品。在这种情况下,user2还可以有一个名为product的产品。第一种产品不同于第二种产品。在表中,两种产品的名称相同。但用户可能不会同时拥有这两种产品 这是我的产品。rb: validates :title, :description, presence: true validate :uniq_of_product_title def uniq_of_pr

我的项目中有用户模型和产品模型。用户有一些产品。我希望用户产品仅对此用户具有唯一的标题

例如,user1有一个名为product的产品。在这种情况下,user2还可以有一个名为product的产品。第一种产品不同于第二种产品。在表中,两种产品的名称相同。但用户可能不会同时拥有这两种产品

这是我的产品。rb:

validates :title, :description, presence: true

validate :uniq_of_product_title

def uniq_of_product_title
  if Product.where(user_id: user_id).find_by_title(title)
    errors.add(:title, "Product already exists")
  end
end
所以它起作用了。出现问题,然后我编辑说明并尝试更新产品。验证器在表中找到创建的产品并给出一个错误


问题是如何使验证成为最佳方式?

对于这种情况,您可能可以使用常规Rails的validates方法,尝试以下方法:

validates :title, uniqueness: true

在这种情况下,我不能为两个用户都将产品命名为product1