Ruby on rails RubyonRails-唯一性

Ruby on rails RubyonRails-唯一性,ruby-on-rails,Ruby On Rails,我有一个关于唯一性验证的问题 发件人: 它不会在数据库中创建唯一性约束,因此两个不同的数据库连接可能会为要唯一的列创建两个具有相同值的记录。要避免这种情况,必须在数据库中创建唯一索引 这是否意味着无论何时验证唯一性,我都必须在数据库中添加索引?或者,只有当可能同时插入两个记录时,才有必要这样做 这里的最佳实践是什么:唯一和索引始终在一起还是取决于具体情况?这本质上是一种竞争条件。在那一天,艾丽斯用电子邮件地址注册了alice@gmail.com并点击提交按钮两次。因为她打得太快了,所以她只记得它

我有一个关于唯一性验证的问题

发件人:

它不会在数据库中创建唯一性约束,因此两个不同的数据库连接可能会为要唯一的列创建两个具有相同值的记录。要避免这种情况,必须在数据库中创建唯一索引

这是否意味着无论何时验证唯一性,我都必须在数据库中添加索引?或者,只有当可能同时插入两个记录时,才有必要这样做


这里的最佳实践是什么:唯一和索引始终在一起还是取决于具体情况?

这本质上是一种竞争条件。在那一天,艾丽斯用电子邮件地址注册了alice@gmail.com并点击提交按钮两次。因为她打得太快了,所以她只记得它们,而且它们通过了验证。然后这两个数据都写入数据库。解决方案是要求数据库在存储在内存中或写入数据库之间检查唯一性

您需要做的是在迁移中添加一行,如下所示:

add_index :table_name, :column_name, unique: true
就最佳实践而言,当有两个相同的会导致问题时,您肯定希望这样做。如果两条推文提交的内容相同,这可能没什么大不了的,但是如果你有两个用户使用相同的电子邮件地址,这就成了一个问题