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?是否是一个还没进数据库的数据

上一篇下一篇

猜你喜欢

热点阅读