模型验证仅在电子邮件字段不为空时才起作用

时间:2018-02-21 09:51:23

标签: ruby-on-rails devise

我的用户包含以下字段

name, email, phone

我添加了模型验证,如下所示。

validates :phone, uniqueness: true
validates :email, confirmation: true

如果我输入电子邮件并提交表格而未输入电话号码,我会收到电话验证错误。

但如果我在没有电子邮件的情况下提交表单,则没有任何验证工作正常。

这似乎很奇怪,因为验证仅在电子邮件字段有价值时有效。

我希望电话号码唯一性验证能够正常运行。但是,如果没有输入电子邮件,这似乎不起作用。

关于什么是真正的问题?

2 个答案:

答案 0 :(得分:1)

添加presence: true以确保电子邮件是否存在

validates :email, confirmation: true, presence: true

email presence: true

时有效

仅当email_confirmation不为nil时才会执行此检查。要确认,请确保添加确认属性

的状态检查
validates :email, confirmation: true
validates :email_confirmation, presence: true

查看Rails Guide

的内容

答案 1 :(得分:0)

您还应验证电子邮件的存在。您的电子邮件验证应该是这样的。

validates :email, presence: true, confirmation: true

有关详细信息,请查看此页面。谢谢 https://apidock.com/rails/v4.2.7/ActiveModel/Validations/ClassMethods/validates