rails数据交互(2)

来源:互联网 发布:ubuntu中文社区 编辑:程序博客网 时间:2024/06/05 03:48

补充上一章的内容:当代码改变,要重新进入console

模型的数据验证: 对不符合要求的对象无效,不予创建

  1. 存在性验证:
    在User实体类中添加如下代码,进行存在性验证,关键函数(validates),关键字(presence: true/false):
validates :userName, presence: true

在console中:

 irb(main):001:0> @user = User.new    => #<User id: nil, userName: nil, email: nil, created_at: nil, updated_at: nil> irb(main):002:0> @user.save   (0.1ms)  begin transaction   (0.1ms)  rollback transaction=> false irb(main):003:0> @user.errors.full_messages=> ["Username can't be blank"]
  1. 长度验证:关键函数(validates),关键字(length:{maximum: 20})
validates :userName, presence: true , length: {maximum: 20}

加入不满足条件,会报错:

 irb(main):004:0> @user.errors.full_messages=> ["Username is too long (maximum is 20 characters)"]
  1. 格式验证: 关键字(format: {with: 正则表达式})
EMAIL = /\A[\w+\-.]+\.[a-z]+\z/ivalidates :email, presence: true, format: {with: EMAIL}

ruby的正则表达式有点迷……需要再学
然后加入不满足条件的,报错如下:

 irb(main):004:0> @user.errors.full_messages=> ["Email is invalid"]
  1. 唯一性验证:关键字(uniqueness: {case_sensitive: false})
    EMAIL = /\A[\w+\-.]+\.[a-z]+\z/i    validates :userName, presence: true , length: {maximum: 20}, uniqueness: {case_sensitive: false}    validates :email, presence: true, format: {with: EMAIL}, uniqueness: {case_sensitive: false}

但是这种唯一性验证,仅仅是初级手段,存在些许问题,需要在数据库中进行唯一性设置,以后再说,但是在初级阶段来说,够用了。

0 0