0

我们在用户模型上有一个标准的电子邮件验证。要求发生了变化,并说新的验证使用正则表达式检查格式,以不允许电子邮件中出现破折号。

问题是,我如何避免检查系统中存在破折号的现有用户(我们现在希望继续允许)。

如果我在模型上应用验证,它不会让我在用户中保存任何其他字段,直到电子邮件字段验证。

我该如何解决这个问题?这种情况的最佳做法是什么?

4

1 回答 1

2

我可能会这样做:

validates :email, format: { with: <new_format_regex> }, if: email_changed?

仅当电子邮件更改时,添加if: email_changed?才会触发此验证。因此,它不会为现有用户触发,除非他们尝试更改密码,并且它将为所有创建其帐户的新用户触发。

于 2014-06-17T11:10:49.460 回答