具体验证

时间:2014-06-09 11:57:47

标签: validation associations unique

我的项目中有User和Product模型。用户有一些产品。我希望用户产品仅为此用户拥有唯一标题。

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

那是我的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

所以它有效。出现问题然后我编辑说明并尝试更新产品。 Validator在表中查找创建的产品并给出错误。

问题是如何以最佳方式进行验证?

1 个答案:

答案 0 :(得分:0)

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

validates :title, uniqueness: true