如何在模型中进行条件验证

时间:2010-12-09 06:22:04

标签: ruby-on-rails

我需要在我的rails应用中验证名为student_id的字段。

之前的要求是: 该字段是必填字段,将由14个纯数字组成,因此我将以下代码放入学生模型文件中以满足我的需要:

 validates_presence_of :studnet_id
 validates_numericality_of :student_id, :only_integer => true
 validates_length_of       :student_id, :is => 14

如果需求更改为如果字段存在,则必须包含14个纯数字,如何实现条件验证?

3 个答案:

答案 0 :(得分:3)

假设您的意思是“字段可能为空,但如果它有值,则应为14位”:

validates_numericality_of :student_id, :only_integer => true, :allow_blank => true
validates_length_of       :student_id, :is => 14, :allow_blank => true

注意'allow_blank'。这是你的意思,还是我错误地解释了这个问题?

答案 1 :(得分:1)

听起来 validates_format_of 正是您所需要的。你可以给它一个匹配14位数字的正则表达式

答案 2 :(得分:0)

对于rails验证,有一些默认验证选项。其中一个是:allow_nil:allow_nil默认值为falsevalidates_length_of选项{{ 1}}表示属性可能为零;跳过验证。

:allow_nil