Rails中的validate校验

可以使用validates_presence_of方法声明模型类别非空验证:

validates_presence_of(:name,:message =>"姓名不能为空" )
validates_presence_of(:sex,:message =>"性别不能为空" )


还可一次为多个属性验证:

validates_presence_of(:name,:address)


validates_uniqueness_of方法可以声明指定属性的唯一性校验,validates_uniqueness_of方法还可以接收下面可选选项:

  1. :scope选项:表示基于多个参数的唯一属性值。
  2. :case_sensitive选项:指定在执行唯一性验证时是否区分大小写,默认区分大小写。
  3. :allow_nil选项,是否允许nil值,默认为false
  4. :allow_bank选项:是否允许空值,如果为true将会跳过属性值为空的校验
validates_uniqueness_of(:name,:message=>"不唯一")

可以使用validates_length_of方法和validates_size_of方法验证数据长度是否满足约束条件,除了接收:message属性和:on属性外还可以接收以下属性

  1. :minimum选项:定义属性值的最小长度。
  2. :maximum选项:定义属性值的最大长度。
  3. :is选项:定义属性值的精确长度。
  4. :within选项:定义属性值长度的有效范围。
  5. :allow_nil选项:声明属性是否允许为nil,如果允许,则跳过校验。
  6. :too_long选项:定义属性值太长时使用错误信息。
  7. :too_short选项:定义属性太短时使用的错误信息。
  8. :wrong_length选项:定义属性值不匹配时的错误信息。
validates_length_of(:address,:maximum=>50,too_long=>"输入的值太长")


使用validates_numericality_of方法可以验证属性的值是否为数值。除了:message和:on可选项外还可以接收如下可选项。

  1. :only_integer选项:声明属性值是否为整数数值。
  2. :greater_than选项:声明属性的值必须大于该选项指定的值。
  3. :greater_than_or_equal_to选项:声明属性的值必须大于或等于该选项指定的值。
  4. :equal_to选项:声明属性的值必须等于该选项指定的值。
  5. :less_than选项:声明属性的值必须小于该选项指定的值。
  6. :less_than_or_equal_to选项:声明属性的值必须小于或等于该选项指定的值。
  7. :odd选项:声明用户输入的必须是奇数。
  8. :even选项:声明用户输入的数必须时偶数。
validates_numericality_of(:year ,:only_integer =>true,:greater_than =>1910,:less_than => 2011,:message =>"出生年份必须在1910到2011年之间")


使用validates_format_of方法可以使用正则表达式来验证指定属性的值,可以接收:message,:on,:allow_nil,allow:blank,if选项,还可以接收:with选项接收一个正则表达式:

	validates_format_of(:phone,:with => /((0\d{3}|\d{2})-(\d{7}|\d{8}))|(1\d{10})/,:message =>"电话号码格式错误")

确认校验,当输入比较重要又复杂的数据时让用户多次输入防止出错,可以使用validates_confirmation_of 方法。

使用validates_confirmation_of方法对name 属性进行校验:

validates_confirmation_of(:name,:message=>"两次输入不同!")

在视图表单中使用一个虚拟对象属性name_confirmation,并添加一个确定输入的项


  姓名:
  
    
<%= f.text_field :name %>
请填写您的真实姓名
确认姓名:
<%= f.text_field :name_confirmation %>


其他验证方法

  • validates_acceptance_of方法:校验复选框是否被选中。可以接收:message选项,:on选项,:if选项,:accept选项。:accept选项可指定当复选框被选中时属性具有的值,默认为1.
  • validates_associated方法:校验数据对象是否为关联对象。
  • validates_each方法:通过接收一个代码块来遍历指定的多个属性,然后一一进行验证。
  • validates_exclusion_of方法:校验指定的属性的值是否不在一个枚举对象中。
  • validates_inclusion_of方法:和validates_exclusion_of方法完全相反,校验指定的属性的值是否在一个枚举对象中。






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