Rails Rails 工程里 models 里添加 if 逻辑

libochao · 2015年08月06日 · 最后由 rei 回复于 2015年08月07日 · 2483 次阅读

在设置数据约束 的时候有如下要求: 身份证号必须是 18 位数字 姓名长度必须大于 2 小于 4 手机号必须是 11 为数字 住址长度必须大于 10 小于 50

我写出了数据约束 后来添加了新的要求: 1 身份证号和姓名不允许空并且有数据约束 2 地址和电话号码允许为空,如果不为空,实现代码要求的数据约束

希望有人能讲解下该怎么写

校验方法中的选项

在检验方法 validates 中,可以使用几个选项:

选项 含义 例子
allow_nil 是否允许为 nil validates :size, allow_nil: true
allow_blank 是否允许为 blank?,为 false 时,不可填写 "", false, nil validates :title, allow_blank: true
message 自定义错误信息 validates :subdomain, exclusion: { in: %w(www us ca jp), message: "%{value} 为保留关键词" }
on 选择在 create 或 update 上使用校验 validates :email, uniqueness: true, on: :create
strict 校验失败时抛出异常,或自定异常类 validates :name, presence: { strict: true } [1]

为什么不直接贴代码?

#2 楼 @nouse 因为要 show 一下编辑器

第一个直接写两个 validates validates_presence_of :indentical_id,:name validates XXXXXX 条件

第二个 有现成正则能套的, 能直接写在 validates 里的,用:allow_nil => true

不用正则自己写规则的如下:

validate :abc_address

def abc_address unless abc_address == nil XXXXXXXXX #这里写数据约束,自定义的规则 end

def abc_tel unlessabc_tel == nil XXXXXXXXX #这里写数据约束,自定义的规则 end

截图对获得答案不利,有些问题可能复制后改动一点代码就解决了,但是截图的话我是没心机对着图片打一遍的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号