我希望使用给定的重复次数验证唯一性,例如允许三个具有相同名称的用户。
User id: 1, name: "user"
User id: 2, name: "user"
User id: 3, name: "user"
但是您无法创建具有相同名称的第四个用户。我该怎么办:
我会很感激的例子。
答案 0 :(得分:3)
您需要自定义验证,例如
validates :validate_three_maximum
def validate_three_maximum
if User.where(:name => "user").count >= 3 && (new_record? || name_changed?)
errors.add(:name, "Maximum of 3 with this name")
end
end
请注意,您的应用程序中的数据库唯一性检查容易出现竞争情况:请参阅Concurrency and Integrity。
编辑:添加了new_record? + name_changed?检查更新记录不会计入3。