1

在我的 Rails 4 应用程序中,我有一个电子邮件字段。我的模型确保使用以下内容不存储重复值:

validates :email, presence: true, uniqueness: { case_sensitive: false }

这对我很有帮助,而我并不担心确认电子邮件地址,但现在我想在他们能够登录之前确认它们。这意味着我只想在另一个字段confirmed为真时确认唯一性。

有没有一种内置的方法来解决这个问题,还是需要我自己的验证规则?

4

2 回答 2

1

您可以将诸如记录集之类的选项传递给唯一性验证器,如下所示:

validates_uniqueness_of :email, conditions: -> { where(confirmed: true) }

然后它只会对已确认的记录强制执行唯一性。

于 2013-11-02T15:33:15.357 回答
0

我相信这就是你想要的:

http://edgeguides.rubyonrails.org/active_record_validations.html#using-a-symbol-with-if-and-unless

于 2013-11-02T15:31:02.857 回答