Ruby on Rails中的validates验证

今天重构活动通时代码时学习了一下RubyonRails中的validates验证机制,validates验证机制是rails自带的,虽然存在局限性,但用起来还是比我们自己写验证要简单许多,下面就简单学习一下吧

(1)用validates对User模型的name属性进行存在性验证:

打开app/models/user.rb,添加如下代码

class User < ActiveRecord::Base
  validates :name, presence: true
end

validates只不过是一个方法,也可写成

class User < ActiveRecord::Base
  validates(:name, presence: true)
end

(2)对name属性进行长度验证:

class User < ActiveRecord::Base
  validates :name,  presence: true, length: { maximum: 50 }
end

(3)对User模型的email属性进行格式性验证:

使用正则表达式验证Email格式

VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }

我们把这个正则表达式定义为常量VALID_EMAIL_REGEX,Ruby中的常量都是以大写字母开头的。

使用上面的代码可以确保只有匹配这个正则表达式的Email地址才是合法的。(因为VALID_EMAIL_REGEX以大写字母开头,是个常量,所以其值是不能改变的。)

(4)验证Email地址的唯一性:

validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: true
validates :email, presence: true,
                    format: { with: VALID_EMAIL_REGEX },
                    uniqueness: { case_sensitive: false }

直接把true换成了case_sensitive:false,Rails会自动指定:uniqueness的值为true

相关推荐