如果我的日期不存在或格式不正确,如何防止 strptime 抛出错误?
How do I prevent strptime from throwing an error if my date isn't present or in the right format?
我正在使用 Rails 4.2.3。在我的控制器中,当我要保存一个实体时,我有这个
@date = Date.strptime(my_object_params[:day], "%m/%d/%Y")
@my_object.day = @date
respond_to do |format|
if @my_object.save
不幸的是,如果没有包含参数或者它与格式不匹配,我会得到这个错误
ArgumentError (invalid date):
app/controllers/my_objects_controller.rb:33:in `strptime'
app/controllers/my_objects_controller.rb:33:in `create'
如果格式不正确,如何防止 Rails 死机?我已将此验证规则包含在我的模型中,尽管我认为它还没有达到那个阶段,因为我的“保存”直到稍后在方法中才被调用……
validates_presence_of :day
我建议你简单地添加一些错误处理的情况。类似于:
@date = Date.strptime(my_object_params[:day], "%m/%d/%Y") rescue nil
然后处理@date为nil的情况。
尝试更具体地处理错误?
begin
@date = Date.strptime(my_object_params[:day], "%m/%d/%Y")
rescue ArgumentError => ae
#do something rational and valid
end
我正在使用 Rails 4.2.3。在我的控制器中,当我要保存一个实体时,我有这个
@date = Date.strptime(my_object_params[:day], "%m/%d/%Y")
@my_object.day = @date
respond_to do |format|
if @my_object.save
不幸的是,如果没有包含参数或者它与格式不匹配,我会得到这个错误
ArgumentError (invalid date):
app/controllers/my_objects_controller.rb:33:in `strptime'
app/controllers/my_objects_controller.rb:33:in `create'
如果格式不正确,如何防止 Rails 死机?我已将此验证规则包含在我的模型中,尽管我认为它还没有达到那个阶段,因为我的“保存”直到稍后在方法中才被调用……
validates_presence_of :day
我建议你简单地添加一些错误处理的情况。类似于:
@date = Date.strptime(my_object_params[:day], "%m/%d/%Y") rescue nil
然后处理@date为nil的情况。
尝试更具体地处理错误?
begin
@date = Date.strptime(my_object_params[:day], "%m/%d/%Y")
rescue ArgumentError => ae
#do something rational and valid
end