Ruby on rails Rails中的自定义时间验证可用于创建,但不能用于编辑

Ruby on rails Rails中的自定义时间验证可用于创建,但不能用于编辑,ruby-on-rails,validation,time,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 因此,验

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

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
因此,验证失败


时间参数在哪里重置?救命啊

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


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

也许我看错了,但不应该是相反的吗?“时间>=当前时间”?所以你在测试它是否比现在更大?而且,我知道带大写字母“T”的时间是一个保留字。是否与小写字母“t”有冲突?有一个更具描述性的列名,如“alarm_time”,可能是有意义的。
time
不是保留字。它是一个类的名称。Rails有“DateTime.current”,它类似于Time.now,在Rubyth中,Time属性的数据类型是“Time”,而不是“DateTime”。将数据类型更改为datetime有效。
2000-01-01 03:28:00 UTC