Ruby on Rails - 独特性

2024-05-05

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

From : http://guides.rubyonrails.org/active_record_validations_callbacks.html#uniqueness http://guides.rubyonrails.org/active_record_validations_callbacks.html#uniqueness

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

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

这里的最佳实践是什么:Unique 和 Index 总是在一起还是取决于具体情况?


它本质上是一种竞争条件。爱丽丝使用电子邮件地址进行注册[电子邮件受保护] /cdn-cgi/l/email-protection并点击提交按钮两次。因为她很快就击中了它们,所以她只将它们记在记忆中,并且它们通过了验证。然后两者都写入数据库。解决方案是要求数据库在将它们存储在内存中或写入数据库之间检查唯一性。

您需要做的是将这样的行添加到迁移中:

add_index :table_name, :column_name, unique: true

就最佳实践而言,当有两个相同的做法会导致问题时,您肯定希望这样做。如果提交的两条推文具有相同的内容,这可能不是什么大问题,但如果您有两个用户具有相同的电子邮件地址,那就会成为问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby on Rails - 独特性 的相关文章

随机推荐