Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 验证模型中的日期时间格式_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 验证模型中的日期时间格式

Ruby on rails 验证模型中的日期时间格式,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在向一个模型添加验证,该模型有一个start列,该列键入为datetime 目前,我只使用date\u select表单帮助器,但已将列键入datetime,以防我决定将来使用time值 我目前正在使用: validates :start, :presence => true 但是我想知道是否有一个:format=>可以确保我得到一个传入的日期。我知道不太可能有人会改变周围的选择框,但我想你不能太小心,对吧?这取决于你想要接受的日期格式 f、 e 对于dd-mm-yyyy作为日期格式

我正在向一个模型添加验证,该模型有一个start列,该列键入为datetime

目前,我只使用date\u select表单帮助器,但已将列键入datetime,以防我决定将来使用time值

我目前正在使用:

validates :start, :presence => true

但是我想知道是否有一个:format=>可以确保我得到一个传入的日期。我知道不太可能有人会改变周围的选择框,但我想你不能太小心,对吧?

这取决于你想要接受的日期格式

f、 e

对于dd-mm-yyyy作为日期格式

谷歌日期regexp

由于我的答案被否决,我再试试:

   validate do
      self.errors[:start] << "must be a valid date" unless (DateTime.parse(self.start) rescue false)
   end
validate do
self.errors[:start]您可能要签出

这个gem支持一些有用的日期和时间关系验证。在您的情况下,您可以使用它来验证
start
属性,如下所示:

class Task < ActiveRecord::Base
  validates_datetime :start
  # or
  validates :start, presence: true, timeliness: {type: :datetime}
end
类任务
谢谢!目前我正在rails中使用date_select表单帮助器。所以我不确定这是如何将变量传递给模型的。是不是像2011年10月12日那样以一种格式发送?如果是的话,这个正则表达式应该很棒!谢谢不,对不起,我认为这个解决方案只有在你有一个文本字段的情况下才有效。也许我会做一个文本字段-无论如何,连接一个javascript选择器会更容易。谢谢你的提示!是的,你是对的。。例如,jQueryDatePicker就是一个不错的选择!括号是必需的:validate do self.errors[:start]@kleopatra谢谢你的建议。我扩展了答案,以提及问题的特定背景,并使其独立。干杯
class Task < ActiveRecord::Base
  validates_datetime :start
  # or
  validates :start, presence: true, timeliness: {type: :datetime}
end