Project

General

Profile

Actions

Defect #39079

closed

NoMethodError when trying to remove the date of an existing time entry

Added by Holger Just 8 months ago. Updated 8 months ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Time tracking
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:
Resolution:
Fixed
Affected version:

Description

Given

  • an existing time entry
  • Setting.timelog_accept_future_dates? is disabled

then editing the time entry to remove the spent_on field (i.e. setting it to nil or an empty string) results in the following exception:

NoMethodError: undefined method `>' for nil:NilClass
    app/models/time_entry.rb:187:in `validate_time_entry'

Here, it is assumed that the spent_on value is always present as validated by the validates_presence_of :spent_on. During validations however, this may not always be the case as Rails always runs all validations, regardless of any prior failing validations. The issue was originally introduced in #3322, first released with 4.1.0.

The attached patch fixes this error by only checking the spent_on value in validate_time_entry if it was provided. If it is missing or is wrongly formatted, the other validations will catch this and still reject to save the model.


Files

Actions

Also available in: Atom PDF