在我的 Rails 4 应用程序中,我有一个电子邮件字段。我的模型确保使用以下内容不存储重复值:
validates :email, presence: true, uniqueness: { case_sensitive: false }
这对我很有帮助,而我并不担心确认电子邮件地址,但现在我想在他们能够登录之前确认它们。这意味着我只想在另一个字段confirmed
为真时确认唯一性。
有没有一种内置的方法来解决这个问题,还是需要我自己的验证规则?
在我的 Rails 4 应用程序中,我有一个电子邮件字段。我的模型确保使用以下内容不存储重复值:
validates :email, presence: true, uniqueness: { case_sensitive: false }
这对我很有帮助,而我并不担心确认电子邮件地址,但现在我想在他们能够登录之前确认它们。这意味着我只想在另一个字段confirmed
为真时确认唯一性。
有没有一种内置的方法来解决这个问题,还是需要我自己的验证规则?
您可以将诸如记录集之类的选项传递给唯一性验证器,如下所示:
validates_uniqueness_of :email, conditions: -> { where(confirmed: true) }
然后它只会对已确认的记录强制执行唯一性。
我相信这就是你想要的:
http://edgeguides.rubyonrails.org/active_record_validations.html#using-a-symbol-with-if-and-unless