活动通中注册信息的验证都是自己写代码验证的,重构改为用rails自带的验证机制验证的,即用validates验证。
User模型中对存在性的验证是使用 validates 方法,传入 presence: true 参数,如下:
class User < ActiveRecord::Base
validates :name, presence: true或者
validates(:name, presence: true)
end
还可以加上长度验证:
validates :name, presence: true, length: { maximum: 50 }
也可以格式验证,比如对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 中的常量都是以大写字母开头的。
/\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i 完整的正则表达式 / 正则表达式开始
\A 匹配字符串的开头
[\w+\-.]+ 一个或多个字母、加号、连字符、或点号
@ 匹配 @ 符号
[a-z\d\-.]+ 一个或多个小写字母、数字、连字符或点号
\. 匹配点号
[a-z]+ 一个或多个小写字母
\z 匹配字符串结尾
/ 结束正则表达式
i 不区分大小写
唯一性验证:
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: true
验证 Email 地址的唯一性,不区分大小写:
validates :email, presence: true,
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }