时间类型字段获取错误的默认日期时间,如果它无效

时间:2012-09-04 12:06:23

标签: ruby-on-rails ruby-on-rails-3 validation activerecord

可怕的头衔,但这就是我所拥有的:

Loading development environment (Rails 3.2.8)
1.9.3p194 :001 > Product
 => Product(id: integer, name: string, date: datetime, created_at: datetime, updated_at: datetime, end_time: datetime, start_time: time) 
1.9.3p194 :002 > p = Product.new
 => #<Product id: nil, name: nil, date: nil, created_at: nil, updated_at: nil, end_time: nil, start_time: nil> 
1.9.3p194 :003 > p.start_time = "foo"
 => "foo" 
1.9.3p194 :004 > p.start_time
 => 2000-01-01 00:00:00 UTC 

我不希望无效的时间解析成有效的时间。这导致我从表单提交验证问题。

这有点相关:Rails 3 - Validation for Time existence

并在github:https://github.com/rails/rails/issues/6045

中导致此问题

我试着用眼睛跟踪代码,但是除了“foo”不应该解析而且它应该返回nil之外没有任何东西弹出。

编辑:我创建了一个示例应用,显示了这种确切的行为https://github.com/danbeaulieu/test-app

但实际上它只是一个单一模型的裸机应用程序。

1 个答案:

答案 0 :(得分:0)

您可以使用validates_timeliness来验证日期,时间和日期时间。

然后在你的模型中你可以做到

validates_time :start_time

或者查看我的GIST来处理默认日期验证