Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在特定条件下使用唯一列进行迁移?_Ruby On Rails_Migration_Database Migration - Fatal编程技术网

Ruby on rails 在特定条件下使用唯一列进行迁移?

Ruby on rails 在特定条件下使用唯一列进行迁移?,ruby-on-rails,migration,database-migration,Ruby On Rails,Migration,Database Migration,我可以为特定条件的列添加唯一性吗(在表中的其他列上) i、 e Thnx是的,你可以,但你所做的概念是错误的 在表中添加unique=>true时,它将始终验证数据库的唯一性。如果是有条件的,你就不应该这样做。在这些情况下,您需要做的是在模型上而不是在数据库上创建验证,如下所示: class Account < ActiveRecord::Base validates :email, uniqueness: true end 类帐户

我可以为特定条件的列添加唯一性吗(在表中的其他列上)

i、 e


Thnx

是的,你可以,但你所做的概念是错误的

在表中添加unique=>true时,它将始终验证数据库的唯一性。如果是有条件的,你就不应该这样做。在这些情况下,您需要做的是在模型上而不是在数据库上创建验证,如下所示:

class Account < ActiveRecord::Base
  validates :email, uniqueness: true
end
类帐户

你可以在这里阅读更多关于它的信息

是的,我知道。但是如果同时发出两个请求,将跳过验证:(并发性和完整性)。我需要db上的条件。实际上,发生这种情况的可能性很小,但我在这里发现了这个答案,它可能会帮助您。如果您的用户喜欢对点击按钮进行垃圾邮件处理,并且对一个请求进行处理的时间比用户可以对点击进行垃圾邮件处理的时间长,那么这种可能性很大(在我的经验中,这是一种常见情况)。AnezioCampos在他的评论中链接到的答案有一种处理Postgres问题的方法。
class Account < ActiveRecord::Base
  validates :email, uniqueness: true
end