我的项目中有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在表中查找创建的产品并给出错误。
问题是如何以最佳方式进行验证?
答案 0 :(得分:0)
对于这种情况,您可以使用常规的Rails'validates
方法,尝试类似:
validates :title, uniqueness: true