10--Rails数据交互2

模型类就是ActiveRecord,通过上节课我们可以通过微博应用正常地去添加用户了比如sundi,但是有两个大问题:

  1. 添加的时候没有对添加的字段内容作任何形式的验证
  2. 没有可视化界面让用户很方便地区添加新用户,我们用的是rails的控制台

这节课我们着手去解决第一个问题,就是Rails中模型类ActiveRecord的数据验证问题。

我们先进入rails控制台

这次我们仿造上节课的方法再次创建一个对象,不过这次我们不在new后面添加参数。

这时我们来看一下,可以看到新用户的用户名和邮箱都是空的:

通过这个例子可以知道,因为没有验证所以创建用户没有任何形式验证,这样你创建了完全没用的空用户显然是不合理的。所以我们需要rails的验证机制,我们输入格式错误就不予创建并给出提示。

  1. 首先用户名和邮箱的内容不能为空
  2. 用户名必须为字符串,并且长度不能太长,一般规定20个字符
  3. 邮箱格式符合基本的邮箱格式规范
  4. 最后我们希望把邮箱作为用户的唯一标识,不同用户不能拥有相同的邮箱

如上,用户模型需要四种验证:存在性验证,程度验证,格式验证,唯一性验证

数据验证的关键字是validates,而存在性验证有它特有的参数presence

存在性验证就是检查对应的字段属性是否为空

使用就是打开模型文件,如下:

编辑之后为:

添加数据验证关键词validates(必须与第一个冒号中间用空格隔开),后面跟上要验证的字段,在后面跟上要验证的方法叫presence:true表示一定要存在

上面这样写可能比较难理解,其实ruby语言就是这样,方法的括号可以不写,validates就是方法,后面都是参数,如下加上括号也可以:

添加完这部分代码,我们在创建新用户的时候rails就会对userName这个字段进行验证。

我们先退出下然后控制台重进:

添加了数据验证之后,new方法不报错,但是可以看到save方法返回结果是false也就是失败

我们查看下相关的错误信息:

错误信息就是Username不能为空,这就说明数据验证生效了

我们同理可以给邮箱添加验证,

到这里我们就完成了存在性验证,下面完成长度性验证,直接在后面补上长度性验证特有参数length使用如下

注意legth后面使用花括号是因为长度限制有最大最小限制等不止一种限制,多个参数所以用花括号括起来。这里只是设置最大长度20个字符。

我们还是先退出再重进控制台:

同理给邮箱加上长度验证

接下来我们要给邮箱添加格式验证和唯一性验证

格式验证特有参数是format,花括号的with后面是格式的正则表达式

我们还是先退出再重进控制台来试验一下:

invalid翻译就是不合法。

接下来就是唯一性验证,特有参数是uniqueness

太长我们加个逗号再换行输入

但是rails默认验证大小写不同,也就是大写的邮箱和小写的邮箱,rails会认为是两个不同的东西,这样肯定是不行的。所以需要唯一性验证添加上大小写不敏感。

case_sensitive就是大小写敏感,为false表示不区分大小写即不敏感
				

 

 

 

 

 

 

 

posted @ 2016-02-17 00:48  SixEvilDragon  阅读(259)  评论(0编辑  收藏  举报