rails中用validates进行合法性验证

活动通中注册信息的验证都是自己写代码验证的,重构改为用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 }

    你可能感兴趣的:(正则表达式,Ruby)