使用allow_blank验证错误输入的数字

时间:2014-04-24 13:07:16

标签: validation ruby-on-rails-4

例如,当我输入11q而不是11时,我没有收到任何错误,表单正在保存,好像什么都没发生一样。不幸的是,Rails认为11q实际上是零。

这是我目前的验证线:

validates :order_retain_days, numericality: {in: 1..999, only_integer: true,  message: 'retain value must be an integer  between 1 and 999'}, allow_blank: true

db / schema.rb的片段

create_table "order_details", force: true do |t|
    t.integer  "order_retain_days"
end

如果关闭Javascript,如何验证它?我需要允许空白字段或将值设置在数值范围内。

1 个答案:

答案 0 :(得分:1)

您可以创建自己的自定义验证:

validate :presence_and_numericality_of_order_retain_days
def presence_and_numericality_of_order_retain_day
  if self.order_retain_days && !self.order_retain_days=~ /insert your regex here/
    errors.add(order_retain_dats, 'retain value must be an integer  between 1 and 999')
  end
end