Rails中的自定义时间验证适用于创建,但不适用于编辑

时间:2012-01-25 21:33:26

标签: ruby-on-rails validation time

我有一个自定义验证方法,可确保警报只能在将来设置..

class Alarm < ActiveRecord::Base

  validate :alarm_set_in_the_future

  def alarm_set_in_the_future
    if time <= DateTime.current
      errors.add(:alarm, "Please Choose A Future Date & Time")
    end
  end

这很有效,测试在创建新的警报记录时传递。真棒...

但是,编辑警报时,time变量设置为以下日期时间,我不明白为什么!

2000-01-01 03:28:00 UTC

因此,验证失败。

该时间参数何时重置?救命啊!

1 个答案:

答案 0 :(得分:1)

查看表单中提交的内容。这个问题似乎不太可能出现在验证本身。

最有可能的是,在保存记录时,您从表单中获取了一些虚假数据。保存之前控制器中@alarm.time的值是多少? params哈希是什么样的?