Ruby on Rails中的validates验证

今天重构活动通时代码时学习了一下Ruby on Rails中的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

你可能感兴趣的:(ruby on rails)