如果用户插入了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
答案 0 :(得分:2)
可以通过救援来实现,然后添加到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
答案 1 :(得分:0)