validates_format_of和validates之间的区别

时间:2016-06-20 23:00:18

标签: ruby-on-rails ruby-on-rails-4

我们可以通过以下方式验证电子邮件:

validates :email, format: { with: VALID_EMAIL_REGEX }

validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create

两种方法有什么区别。一种方法比另一种更好吗?

1 个答案:

答案 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