2018-07-15
2018-07-15 本文已影响0人
护念
验证基本结构
这个样子
validates :字段,验证helper: {选项:,message: ''},验证触发/跳过条件(on/allow_xx)
常规验证helper分类
一、存在 VS 不存在
1、presence 存在
2、absence 不存在(nil /空字符串)
PS: 利用present?
方法
二、包含 VS 不包含
1、inclusion 包含
2、exclusion 不包含
PS: 把范围值放在数组中
三、字符串
1、format 格式匹配(正则)
2、length 长度限制
3、uniqueness 唯一性验证
PS: 这里唯一性验证,不能保证(并发)数据库中数据的唯一性,数据库层也要限制。
四、数字
numericality
数字范围(大于/小于/等于)
五、特定用途
1、confirmation 确认两次输入一致(密码)
2、acceptance 接受条款(默认1/true)
PS:confirmation只有在字段不为nil时才验证
验证触发控制
1、
allow_nil
字段为nil 时跳过验证
2、allow_blank
字段满足blank?方法 跳过验证
3、on
一般 接create/update
PS: on 也可接一个自定义的 上下文符号,只有传这个符号时,才会去验证。
方法
爆炸方法
默认情况下,验证会在create
/update
/save
时触发,但不会报错。
我们在其后添加!,让保存失败时,直接报错。
错误方法
PS:它是对于对象而言的。
1、@user.errors
errors
是一个错误对象
2、@user.errors.messages
a、messages
是errors中的实例变量
b、messages
是一个hash
c、messages
它的键是 属性,值是数组
valid? 和 new_record?
1、
valid?
是否通过验证
2、new_record?
是否是一个还没进数据库的数据