如果用户插入 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/