大家都知道validates_presence_of用来验证是否为空,那么,对几个属性进行组合验证是否为空,该怎么写呢?
下面举个简单的例子。
module ActiveRecord
module Validations
module ClassMethods
def validates(*attr_names)
msg = attr_names.collect {|a| a.is_a?(Array) ? " ( #{a.join(", ")} ) " : a.to_s}.join(", ") +
" can't all be blank. At least one field must be filled in."
configuration = {
:on => :save,
:message => msg }
configuration.update(attr_names.extract_options!)
send(validation_method(configuration[:on]), configuration) do |record|
found = false
attr_names.each do |a|
a = [a] unless a.is_a?(Array)
found = true
a.each do |attr|
value = record.respond_to?(attr.to_s) ? record.send(attr.to_s) : record[attr.to_s]
found = !value.blank?
end
break if found
end
record.errors.add_to_base(configuration[:message]) unless found
end
end
end
end
end
我们可以像这样去使用它:
validates :nickname, :passport, :password
这个用来验证nickname、passport和password是否均为空,三者只要有一个不为空,则验证通过。
我们还可以这样来用它:
validates :nickname, [:passport, :password]
这个用来验证nickname或者(passport和password)是否均为空,二者只要有一个不为空(后者必须均不为空),则验证通过。
具体如何将这个方法加入模块中,可以参考http://www.iteye.com/topic/521123
分享到:
相关推荐
首先,要实现通过class验证表单不为空,我们需要遵循以下步骤: 1. 为需要验证的表单元素(如`<input>`、`<select>`、`<textarea>`等)添加class,名称可以自定义,但需确保在同一页面内的一组需要验证的元素使用...
"WPF验证之——必填验证 ."这个主题主要探讨的是如何在WPF中实现对用户输入字段的必填验证,确保用户不为空的情况下提交数据。 首先,我们需要了解WPF的验证机制。WPF提供了数据绑定框架,它允许UI元素(如TextBox...
alert("真实姓名不能为空!"); return false; } // 密码验证 if($("#MemberPassword").val() == ""){ alert("密码不能为空!"); return false; } var pwd = document.getElementById("MemberPassword"); if...
本知识点将详细介绍ValidForm在验证表单数据时,如何设定数据可以为空,或者当数据不为空时按照指定格式进行验证的使用方法和技巧。 在ValidForm的最新版本(例如5.3.2版)中,datatype属性被扩展为支持直接绑定...
#### 二、正则验证空字符串 除了验证手机号码之外,我们还需要判断字符串是否为空或者仅包含空格。 ##### 2.1 正则表达式解析 ```java String regex = "^\\s*$"; ``` - `^`:字符串的起始位置。 - `\\s*`:匹配...
以上方法覆盖了常见的表单字段验证需求,包括但不限于是否为空、是否包含特定字符、是否为数字、是否为英文字符以及字符串长度的检查。这些方法可以灵活组合使用,以满足不同的业务场景。通过这些基础的验证逻辑,...
- **前端验证**:提高用户体验,快速反馈错误,但可能被绕过,因此不能替代后端验证。 - **后端验证**:提供额外的安全层,防止恶意用户绕过前端验证。 7. **库和框架的支持** - **jQuery Validate**:一个流行...
WPF前台数据验证(红框)(包括3.5和4.0两个版本) WPF 显示验证错误的默认方式是在控件周围绘制红色边框。...通过将 Styles 和一组与验证关联的附加属性进行组合,可以相当轻松地自定义验证错误显示。
1. **基本验证**:检查输入是否为空,这是最常见的验证,确保用户已填写所有必填字段。 2. **长度验证**:限制输入的字符数,例如用户名的长度不能超过20个字符。 3. **格式验证**:验证输入数据的格式,如电子邮件...
判断字符串`str`是否全为空格或空白字符,用于辅助`CheckData`函数检查字段是否为空。 #### istoolong(str, i) 检查字符串`str`是否超过了指定的最大长度`i`,同样作为`CheckData`函数的辅助函数。 ### 3. 高级...
为了解决QDateEdit不能输入空值的问题,我们可以采用以下方法: 1. 自定义验证器:Qt允许我们为QLineEdit设置自定义的输入验证器(QValidator)。我们可以创建一个继承自QValidator的类,并重写其validate()函数,...
1. **验证规则**:formValidator提供了许多内置的验证规则,如非空、邮箱、电话、数字范围等,可以根据需要选择或组合使用。 2. **实时验证**:在用户输入时,formValidator可以即时检查数据的有效性,显示错误提示...
例如,你可能希望用户名字段不能为空,邮箱字段必须符合电子邮件格式,密码字段应包含特定字符组合等。 在描述中提到的"增加中文包",这可能是指`jQuery Validate`插件的国际化支持。为了适应不同地区用户的语言...
如果验证失败,返回一个表示错误的JSON,比如`{"status":"error","message":"用户名不能为空"}`。 4. 将处理结果写入HttpServletResponse,设置合适的响应头和内容类型(通常为"application/json")。 最后,前端...
否则返回`false`表示不为空。正确的实现应该是: ```javascript function isEmpty(ui) { if (ui == null || ui == "") { return true; } else { return false; } } ``` ### 2. 获取长度(支持多字节字符) ###...
例如,如果你需要验证一个字段既不能为空,长度也不能超过10个字符,可以这样写: ```javascript const validation = object => { return Spected.object(object) .prop('fieldName', Spected.string().is...
在这个案例中,`SVM.m`可能是实现SVM参数优化的MATLAB代码,它可能包含了对不同参数组合的遍历和交叉验证过程。`BreastTissue_data.mat`可能是一个包含乳腺组织数据集的文件,这个数据集常用于SVM的示例和实验,帮助...
本推荐集合包含了几个高效、实用的表单验证方法,特别是针对密码检验和防止表单字段为空等常见需求。下面我们将深入探讨这些验证技术。 1. **密码验证**: - **复杂度要求**:通常,密码应包含大小写字母、数字和...
- 用户名和密码的输入验证:确保用户名和密码不为空,避免特殊字符等不安全输入。 - 错误处理:处理可能的数据库连接问题,如文件不存在或权限问题。 5. **测试和调试**: - 输入不同的用户名和密码组合,测试...
- 若不为空,则根据不同文本框的类型使用不同的正则表达式进行验证。 3. **正则表达式验证函数 `checkRGEX(id, patrn, val, valobj, error)`**: - **参数说明**: - `id`:当前文本框的ID。 - `patrn`:正则...