Ruby on Rails 4.模型条件验证

时间:2015-11-19 12:14:55

标签: ruby-on-rails ruby

我的模型包含一些验证规则:

class Order < ActiveRecord::Base

  validates :zip_code, presence: true, length: {is: 5}, numericality: {only_integer: true, :greater_than => 0}
end

当zip_code为空时,我不需要执行其他zip_code验证(如果zip_code为空白,则它是多余的,用户页面上的所有其他验证消息看起来都很奇怪)

我如何实现这个逻辑?我需要验证length, is_integer and greater_than only if zip_code is not blank?,我需要在用户页面上只显示zip_code can't be blank消息

1 个答案:

答案 0 :(得分:2)

您可以执行类似

的操作
validates :zip_code, presence: true
validates :zip_code, length: {is: 5}, numericality: {only_integer: true, :greater_than => 0}, :if => :zip_code?

希望它有所帮助!