Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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_Ruby - Fatal编程技术网

Ruby on rails 如何获得无效电子邮件或电子邮件字段留空的验证错误?

Ruby on rails 如何获得无效电子邮件或电子邮件字段留空的验证错误?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我试图验证表单中的字段,在表单中,我希望输入的两个不同问题有两条不同的消息 我有以下代码: validates_format_of :email, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :allow_blank => false 如果电子邮件字段留空,则网站中将显示错误消息“电子邮件无效” 如何使验证返回一个消息,如果该字段不被用户

我试图验证表单中的字段,在表单中,我希望输入的两个不同问题有两条不同的消息

我有以下代码:

validates_format_of :email, 
                    :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,
                    :allow_blank => false
如果电子邮件字段留空,则网站中将显示错误消息“电子邮件无效”


如何使验证返回一个消息,如果该字段不被用户所忽略,而不是仅仅说它太短,则不可以是空的?

您为空白实例创建单独的验证:

validates_presence_of :email    
validates_format_of :email, 
                    :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,
                    :allow_blank => true

我喜欢用两种不同的验证来处理这个问题(并确保它们不会同时启动)。比如说:

validates_format_of :email,
                    :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,
                    :allow_blank => true
validates_presence_of :email
验证
的存在,确保电子邮件不是空的。将
的\u format\u更改为使用
:allow\u blank=>true将确保在电子邮件为空时格式验证不会运行

在Rails 3.0+中,您还可以使用以下方法将两个验证组合为一个验证:


您需要单独添加另一个状态验证检查,如:

validates :email, presence: true, format: { with: YOUR_REGEX }
validates :email, presence: true, format: { with: YOUR_REGEX }