我们可以通过以下方式验证电子邮件:
validates :email, format: { with: VALID_EMAIL_REGEX }
或
validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create
两种方法有什么区别。一种方法比另一种更好吗?
答案 0 :(得分:4)
这两种形式没有区别。第一个只是一个方便的快捷方式,可以在单个属性上指定多个验证。例如,假设您希望确保电子邮件有效但也是唯一的。在您的示例中使用第二种形式,这将写成
validates_uniqueness_of :email
validates_format_of :email, with: VALID_EMAIL_REGEX
或者,可以使用validates
validates :email, uniqueness: true, format: { with: VALID_EMAIL_REGEX }
使用validates
的另一个好处是,您可以通过一次调用validates
将默认验证与您自己的自定义验证混合使用。更多信息here。