Rails 3:如何防止我的validation从time_select下拉菜单中传递“nil time”?
我使用time_select和提示(“选择小时”……)并且想确保用户实际输入有效时间。 但是如果在没有选择时间的情况下提交表单(因此选择了空提示选项),我的validation不会出现任何错误。
我的validation:
validates :start_time, :presence => true, :allow_nil => false, :allow_blank => false
原因是rails将time_select字段的输入自动转换为此日期,当它们为空时:
0001-01-01 00:00:00
有没有一种很好的方法可以防止这种情况发生?
谢谢!
如果你想强制执行validation,至少从这篇SOpost和这篇SOpost看 ,你会想要进行自定义validation。
class Whatever < ActiveRecord::Base validate :time_scope ... private def time_scope if Whatever.where().time == "0001-01-01 00:00:00" errors.add(:time, "Oh no you didn't enter that garbage time on my watch!") end end end
显然这是一个愚蠢的例子,但我希望它能得到这个想法。