3

在 Rails 中,我试图验证通过 excel 文档导入的日期。它不会通过 ActiveRecord,因此我无法使用系统中用于验证其他日期的Timeliness gem 。

所以我写了我自己的 gem 来验证日期的格式,但是有些日期是无效的,例如31/04/2013,如果日期的格式不正确,那么它会引发RuntimeError我救援并提供错误消息。但在红宝石中:

Date.new(2013,4,31)
» ArgumentError: invalid date

所以我想拯救他们中的任何一个。我只是担心会出现一些 ArgumentError 并且不会是这个确切的。所以我只想拯救它ArgumentError: invalid date,这可能吗?

这是我写的 excel 日期检查器

  def as_date
    return nil if self.blank?
    begin
      date = DateDojo::DateSensei.date_format_validation(self)
      if date.class == Date
        return date
      else
        return false
      end
    rescue RuntimeError
      :invalid_date_format_to_make_validations_cry_and_die_sad_face
    rescue ArgumentError
      :dates_that_wouldnt_exist_even_in_the_correct_format
    end
  end
4

1 回答 1

4

您可以像这样定位特定的错误消息:

begin
  ...
rescue ArgumentError => e
  if e.message =~ /invalid date/
    # Do something
  else
    puts e.message
  end
end
于 2013-11-14T09:47:47.913 回答