gpt4 book ai didi

ruby-on-rails - Ruby on Rails - 唯一性

转载 作者:行者123 更新时间:2023-12-04 05:32:15 26 4
gpt4 key购买 nike

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

来自:http://guides.rubyonrails.org/active_record_validations_callbacks.html#uniqueness

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

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

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

最佳答案

它本质上是一种竞争条件。其中 Alice 使用电子邮件地址 alice@gmail.com 注册并点击提交按钮两次。因为她击中它们的速度太快,所以她只在内存中记住它们,并且它们通过了验证。然后两者都写入数据库。对此的解决方案是要求数据库在它们存储在内存中或写入数据库的时间之间检查唯一性。

您需要做的是在迁移中添加这样一行:

add_index :table_name, :column_name, unique: true

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

关于ruby-on-rails - Ruby on Rails - 唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12426915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com