ruby-on-rails - 如何验证(和处理)传递给.to_date的值是否有效或返回错误?

标签 ruby-on-rails validation date ruby-on-rails-4 error-handling

如果用户插入 to_date 方法不接受的值,例如“有些胡言乱语”,它返回:

“ArgumentError:无效日期”

我该如何构造一个自定义验证,该验证将验证消息返回给用户并且不停止应用程序?

我当时认为重用another answer中的代码是一个好主意,但我不知道如何将其应用于to_date

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

最佳答案

可以通过抢救来实现,然后将其添加到errors

class Post < ActiveRecord::Base

  validate do |post|
    begin
      Date.parse(post.date)
    rescue ArgumentError
      errors.add(:date, "must be a valid date")
    end
  end

## Another way

  validate do |post|
    # make sure that `date` field in your database is type of `date`
    errors.add(:date, "must be a valid date") unless post.date.try(to_date) 
  end
end

关于ruby-on-rails - 如何验证(和处理)传递给.to_date的值是否有效或返回错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26002414/

相关文章:

json - 向 Grails 发送日期时的 GORM 默认日期格式

date - 使用 Primeng Datepicker 如何仅启用月份的最后一天?

ruby-on-rails - Rails 动态错误页面(404、422、500)显示为空白

javascript - Socket.io - 如果 "client"发出错误数据,防止服务器崩溃

javascript - 使用javascript检查日期范围内是否存在周末

jquery.validate.js JavaScript 错误

java - 使用 Jericho 验证 Java 中的 HTML 标签

jquery - 使用typeahead.js的Rails-400(错误请求)

ruby-on-rails - 无法在 Prawn 中绘制边界框边框

ruby-on-rails - 如何从 Rails 中下载的 zip 文件中获取 XML 文档