我在rails应用程序的模型中有以下三个验证:
validates_presence_of :reset_code, message: 'Please enter your reset code'
validates_length_of :reset_code, is: 4, message: 'Your reset code should be 4 digits'
validates_format_of :reset_code, with: /\A[0-9]{4}\z/, message: 'Please enter a valid reset code'
如果第一个验证是有效的,我只想激发第二个和第三个验证(因为没有必要告诉用户复位代码不是正确的长度或格式,如果他们根本没有输入一个)。
这就是:
validates_length_of :reset_code, is: 4, message: 'Your reset code should be 4 digits', :if => :reset_code.present?
答案 0 :(得分:1)
您应该使用新的验证语法,并提供简单的if:
条件:
validates :reset_code, length: { is: 4 },
message: 'Your reset code should be 4 digits',
if: -> { reset_code.present? }
validates :reset_code, format: { with: /\A[0-9]{4}\z/ },
message: 'Please enter a valid reset code',
if: -> { reset_code.present? }