美文网首页
2018-07-15

2018-07-15

作者: 护念 | 来源:发表于2018-07-15 09:05 被阅读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?是否是一个还没进数据库的数据

    相关文章

      网友评论

          本文标题:2018-07-15

          本文链接:https://www.haomeiwen.com/subject/xwnupftx.html