Проверка формата DateTime в модели - PullRequest
2 голосов
/ 22 декабря 2011

Я добавляю проверки в модель со столбцом start , который набирается как datetime

В настоящее время я использую только date_select помощник по форме, но оставил столбец с типом datetime на тот случай, если я решу, что хочу использовать значение времени в будущем.

В настоящее время я использую:

validates :start, :presence => true

Но я хочузнаю, если есть: format =>, который гарантирует, что я получу дату. Я знаю, что вряд ли кто-то изменит поля выбора вокруг, но я думаю, вы не можете быть слишком осторожны, верно?

Ответы [ 2 ]

10 голосов
/ 22 декабря 2011

Зависит от того, какие форматы даты вы хотите принять.

f.e.

validates :start, :presence => true, :format => /(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d/

для дд-мм-гггг в качестве даты.

Google для регулярного выражения даты!

Поскольку мой ответ был отклонен, я попробую еще раз:

   validate do
      self.errors[:start] << "must be a valid date" unless (DateTime.parse(self.start) rescue false)
   end
1 голос
/ 15 августа 2013

Возможно, вы захотите проверить validates_timeliness gem .

Этот драгоценный камень включает некоторые полезные проверки даты и временных отношений.В вашем случае вы можете использовать его для проверки вашего атрибута start следующим образом:

class Task < ActiveRecord::Base
  validates_datetime :start
  # or
  validates :start, presence: true, timeliness: {type: :datetime}
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...